close

參考   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) )

 存放使用者資訊的表格(tblUser)

 (圖片來自http://yilinliu.blogspot.com/2010/07/asp-utf-8.html)

    改成 nchar / nvarchar / ntext 這些型態是為了能存utf-8字元,例如 &#32137


    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. 做完這兩步你會發現,原本的"張&#32137;琴"已可以在網頁上正常顯示。

          但此時再去做新增動做(陳張綉琴),存到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 %>

提供給大家做參考囉~

 

 

==========================================================================

 

 

 

大樹就算想靜靜的不動

但風一直吹

 

 

最後也終將被彎曲折斷... 

 

 

 

 

 

 

 

 

擁抱太陽的月亮好看 

 

arrow
arrow

    J a n e t 發表在 痞客邦 留言(0) 人氣()