7/27 08' ![]()
錯誤的情況是以 utf-8 編碼的前台頁面,存入 MS-SQL 2000 後,部份 utf-8 字碼會變亂碼。以我的主機而言,存入部份簡體字時,就是亂碼。根據微軟的官方說法,是 unicode 字元不同所導致。
原因是找到了,但官方說法中,並沒有提出很有效的解決方案。先來看發生的情況:
會發生亂碼的情況:
不會發生亂碼的情況:
也就是說,如下語法,可能會發生亂碼情況:
| insert into member (memberID,memberName) Values ('Audi','王小东') |
這個時候,MS-SQL 中的資料,就可能變成「王小?」,同樣情況也發生在使用 update 更新資料列時。
而如果是以 Recordset 方式新增,則不會發生亂碼,如下:
|
如果是用這個方法,只要執行寫入資料庫的頁面,設定好編碼語系,多半就沒有問題。
根據一份非官方說法,加上實作測試的結果,有以下內容,你可以考慮加在頁面中:
以上是兩個很基本的設定,但仍無法解決問題,因為這個亂碼問題來自 MS-SQL 本身,所以你在頁面中再怎麼使力,完全沒用,我找到了一條方案,各位不妨試試,我的實作成功而有用,只不過花了很多時間,改了上百支程式就是了!
方法是:把 insert into 及 update 語法中傳值的部份,加上「前置詞 N」,有興趣的人,可以查看微軟官方文件。
也就是修正成以下寫法:
| insert into member (memberID,memberName) Values (N'Audi',N'王小东') |
使用 update 時,也比照辦理,好了!祝你順利!
同意轉載,不過麻煩看一下轉載需知
archer 2009/4/18 下午 03:16:00
我也遇到了這個問題,一直到現在都無解,
看了您的方法後,也覺得要改幾佰支程式,也不想解了,
聽說把資料庫升級到2005應該可以較簡單吧,
但我也還沒有去做,還不知是否可行
![]()