2006-02-24

VB6.0 與 unicode

手邊在維護的用 VB 寫的系統最近遇到程式需要支援 unicode 的問題,找了一些資料並做了一些測試後,發現問題可以解決,但是有一些地方需要修改。

根本的問題在於VB有些物件(像是 label, text 等)使用 big5 碼,而 big5 碼只包含了中文字型中常用字,只要有任何字超過這個範圍,就無法用 big5碼來表示,所以後來才會有所謂的 unicode 的出現。

1,前端程式:VB6.0 裏面的 label, text 使用 big5 碼,所以有些字無法顯示,微軟早就發現這個問題,所以後來有了 microsoft forms 2.0 的出現來解決這個問題(如圖所示):,使用 microsoft forms 2.0 的物件,就能夠在上面顯示 unicode(如圖所示):,左邊是傳統 text,右邊是 fm2.dll物件。

2,後端資料庫:後端資料庫同樣存在這個問題,要存取 unicode 文字,有二個步驟,第一個步驟是在定義資料庫時,要用 nchar 或是 nvarchar 來取代原本的char 及 varchar(所圖所示):。第二個步驟是存入資料時,需加上 'N'符號,才能正常存入unicode(如圖所示):
3,VB程式與資料庫的溝通:如前所述,VB 程式的 SQL 命令也得加上 'N' 符號才能正常存入 unicode,只是,vb6.0 的 form 本身也只吃 big5 碼,所以連 form 才得換成 fm2.dll 的 form,有了這些的配合,才能從
VB 前端程式存取 unicode 資料。

1 comment:

symis said...

感謝提供資訊!