參考 http://jamyy.dyndns.org/blog/2011/09/3299.html
http://yilinliu.blogspot.com/2010/07/asp-utf-8.html
前些天asp網頁在做新增使用者時,出現了個錯誤
只要姓名欄位出現一些特殊字像是斈、綉、 堃等字,網頁就會出現錯誤...
========================================================================
解決方法
1. 將SQL資料庫裡,資料欄為的型別改為 nchar / nvarchar / ntext ( 自己是用nvarchar(50) )
(圖片來自http://yilinliu.blogspot.com/2010/07/asp-utf-8.html)
改成 nchar / nvarchar / ntext 這些型態是為了能存utf-8字元,例如 綉
ps. 此時網頁裡的 charset 還是原本的 big5, 這時後去做新增使用者時打上"張綉琴"
在SQL欄位裡的值會是"張綉琴"
有些主機做到這一步時就可以正常運作,也可以在畫面顯示"張綉琴"
但有些卻是新增沒問題,可是查詢的結果,顯示在網頁上的是"張綉琴"
這...可能就跟使用者端瀏覽器有關了 (亂猜的不是很確定 )
所以接下來就是 ↓
2. 把原本網頁另存成UTF-8格式
做法: 用記事本開啟該asp檔 > 另存新檔 > 編碼部分把 ANSI (或其他) 改成 UTF-8 > 存檔
3. 把網頁檔 <head> 中 <meta http-equiv="Content-Type" content="text/html; charset=big5" /> 裡面的 big5 改成 utf-8
ex. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
ps. 做完這兩步你會發現,原本的"張綉琴"已可以在網頁上正常顯示。
但此時再去做新增動做(陳張綉琴),存到SQL欄位裡的值會是"陳張?琴"
當然顯示在網頁也會是"陳張?琴"
所以,如何讓SQL能存utf-8網頁資料?? ↓能
4. 將該 insert 語法欄位值前面多加 N
ex. 原本 insert into tb_user values ('admin', '張綉琴')
/ insert into tb_user values ('& ID &', '& Name &')
修改後 insert into tb_user values ('admin', N'張綉琴')
/ insert into tb_user values ('& ID &', N'& Name &')
(第一次改還傻傻的改成 insert into tb_user values ('& ID &', '& "N"&Name &')...
中文理解力不太好,千萬別跟我一樣!!)
基本上做完上面四個步驟就沒問題了 (我自己是這樣 )
還有看到其他資料是說在VB程式碼第一行加
Response.CodePage = 65001
Response.CharSet =
"utf-8"
或者網頁程式碼第一行加
<%@ CodePage=65001 %>
提供給大家做參考囉~
==========================================================================
大樹就算想靜靜的不動
但風一直吹
最後也終將被彎曲折斷...
擁抱太陽的月亮好看