2013年8月7日 星期三

[SQL] 簡體字存入資料庫之亂碼解決方式

環境:
WinXP(繁體)
SQL Server 2005(繁體)

目的:
讓簡體字存入資料庫而不變為亂碼[?]

解決:
1)
在 VB.Net 中使用 StrConv 函數進行繁簡字體轉換
將USER輸入的簡體字轉為繁體字存入資料庫
而在應用程式顯示資料時再由簡體字轉為繁體字

2)
MSSQL 簡體字存入亂碼解決方式
資料庫型態須定義為 ntext 或是 nchar , nvarchar
若定義成一般習慣前面未加 'n' 將只能放本國語系的文字
如果簡體字存入就會變成 '?'
而當 Insert 或是 UPDATE 資料時直接將簡體資料寫入也會變成 '?'
寫法必須改為 INSERT INTO table_name(test) VALUES(N'测试')
在寫入的資料前要加 N 他在存入資料庫時才會去呼掉到擴充字集..
如未加 N 他則是使用 big-5 字集...如果使用 .Net 裡面的 DataApdater 來
Update 資料也要注意 Parameters 裡面的關於每個參數的型態設定..
不然也會造成 '?' 的情形發生...................

參考:
SQL Server原來是不支援UTF-8的,直到SQL Server 2019才支援 

為什會需要將nvarchar轉varchar呢!因為在作SQL與DB2的轉換,DB2那邊都是varchar的!

簡中定序:Chinese_PRC_Stroke_CI_AS


繁中定序:Chinese_Taiwan_Stroke_CI_AS


沒有留言:

張貼留言