Posts

Showing posts from March, 2013

[SQL Server] 關於香港常用字(或難字)的字元儲存問題

Image
哎。又是歷史交給我們偽DBA的問題。

最近有很多big-5碼的資料從AS400轉移到SQL Server上去。

把Big-5的資料轉到SQL Server其實並不難(可參考小弟的這篇文章)

問題是資料中有很多Big-5編碼的香港字(或叫難字,造字,增補字,罕用字),

當這些字放到只有相容Unicode的資料型別(Data Type)的時候就會變成問號。

加上將來公司鐵定會慢慢放棄使用Big-5編碼改成Unicode,就算今天A眼開B眼閉,面對全民Unicode的趨勢早晚也是單拖要面對囧。現在做點研究,也許將來就省點事吧。

所以剛剛小弟就做了點小測試,首先建立一個Table包含以下data type的四個欄位,然後在每一個不同data type的欄位中新增同一筆含有香港字的數據。

charncharvarcharnvarchar
測試過程小弟就不多說了,結果如下圖:

結論:

如果資料欄位需要支援 Unicode,必須使用 nchar,nvarchar或ntext 型態。nchar,nvarchar在同一欄位同一筆資料中可同時存在big-5或Unicode的香港字。當存取Unicode的香港字的時候,請記得在Insert statement中加入N字,不然將無法存取。(說明在此)將Big-5編碼的香港字變成Unicode會是一種非常爆肝的過程(無誤)