[SQL Server] BIG5難字寫入資料庫(BIG5篇)

BIG5-難字

鍵入BIG-5造字,寫入BIG-5造字對應中文內碼到資料庫中。

上一篇,實驗Unicode的T-SQL輸入環境下將位在BIG-5難字中的""寫入Unicode編碼的欄位:

但其實說穿了,就是把Unicode的N'瀞'內碼寫到Unicode的編碼欄位上,並不是真的使用到BIG-5的造字區字碼,只要注意不要因為定序而被SQL或是Windows\.NET判斷成BIG5而轉換

扣除主機系統的EBCDIC/EUC/JIS內碼,經常碰到的中文交換內碼是ANSI+BIG-5,恰好碰到的幾家銀行也會在BIG-5造字區建立自己的客戶會用到的中文字碼,接下來我們來實作把BIG-5的難字就寫進BIG-5編碼的資料庫欄位。

  • 第一步: 利用Windows內建造字程式(eudcedit.exe)建立[瀞]

這邊我們用BIG-5E的字集碼中的[]83F8,同時連結注音輸入法ㄐㄧㄥ;另外造字程式會同時新增BIG-5與UNICODE,UNICODE會按照BIG-5造字序下來,對應F088

  • 第二步: 輸入T-SQL指令,記得要選剛剛造出來的新字(),這邊會有一字兩碼的狀況(因為Unicode本來就支援瀞,現在造字區也對應有了1個)。

INSERT INTO TESTWORD
	VALUES ('瀞', N'瀞')
  • 第三步: 查詢寫入結果(序號3是這一次寫入結果)

神奇的事情發生了!不論BIG-5難字,Unicode難字都寫入了!可以看出Unicode 701E的瀞和F088的瀞的差異。

1.C1欄位是BIG5,內碼83F8,正確!

  (指令是Unicode T-SQL,但是Windows/.NET會自動轉F088,寫入時,欄位是BIG-5,SQL還會自動Mapping回來83F8,關鍵在於造字區序會自動對應,如果選本來Unicode的瀞,她就不能用順序的慣例轉回去了。)

2.C2欄位是Unicode,內碼F088,也正確寫入造字區的[瀞]了。

碰到幾家銀行在BIG-5造字作法大概有以下2種:

  1. BIG-5造,Unicode不造
  2. BIG-5造,Unicode造

呼~第1種作法要另外寫AP轉(抓頭)

補充: 從黑暗大的分享,聯想直接利用Hex 16進位寫入的方式:

INSERT INTO TESTWORD
	VALUES (0x83F8, 0X88F0)

序號4是用Hex字串寫入的結果。