本文已徵得原作者黃權燊(
中文黃大仙)同意轉載,由小弟代勞貼上
VCL字集編碼字串表
--------------------------------------------------------------------------------
Builder / Delphi 的程式都有以下的字集編碼字串表.
ANSI_CHARSET=00
DEFAULT_CHARSET=01
SYMBOL_CHARSET=02
MAC_CHARSET=4D
SHIFTJIS_CHARSET=80
GB2312_CHARSET=86
CHINESEBIG5_CHARSET=88
GREEK_CHARSET=A1
TURKISH_CHARSET=A2
HEBREW_CHARSET=B1
ARABIC_CHARSET=B2
BALTIC_CHARSET=BA
RUSSIAN_CHARSET=CC
THAI_CHARSET=DE
EASTEUROPE_CHARSET=EE
OEM_CHARSET=FF
(一) 首先, 我們先看看字集編碼字串表放在那裡.
我們以 GB2312為例, 假設用 Ultra Edit 開啟一個程式Builder程式 graphics.exe, (如果各位有興趣做實驗, 可以在本站下載 Graphics v1.0 Free)
找尋字串GB2312, 如下圖
GB2312字串的 file位置是 211d8, 放到 RVA Converter 內去轉換
rva 是421bd8, 亦即是內碼為 d8 1b 42 00 ( rva 是十六進制長整數, 內碼記錄由後到前, 每兩位數為一組 )
再用 Ultra Edit 去找尋, 得到的是
很明顯, 前面的86000000是指簡體中文, 而後面的88000000是指繁體中文.
這部份內碼不用我解釋, 大家都知道是字集編碼字串表.
修改字集編碼字串表就可以取代移花接木法.
(二) 修改字集編碼字串表
現以 Delphi 程式 formread.exe 為例, 以下是已經由簡體譯成繁體的程式.
當然, 在實際工作時, 我們提議先修改字集編碼字串表, 然後做轉譯的工作.
使用 Ultra Edit 打開 formread.exe, 把內容拉到最尾. 然後由尾向頭找尋內碼 86000000
很快就會找到符合下面格式的內碼.
86 00 00 00 xx xx xx xx 88 00 00 00
xx xx xx xx 是GB2312字串的rva碼, 每個程式都不相同, 我們可以忽略.
到這裡, 只要把 86 改成 88 就大尼i成, 比較移花接木法, 修改位置較少, 但要小心比對內碼.
看看修改後的表現, 無得彈.
--------------------------------------------------------------------------------
CX Studio
wongtaisin.uhome.net
hugewong@yahoo.com.hk
all rights reserved
19/01/2003
==============================================
小弟感想:
這個方法的妙處除了可以比較簡易的修改語系,使程式能正確的顯示中文外;也解決了當同時有二種語系設定的程式時的問題,因為我曾遇過同時設置了簡體中文語系(GB2312_CHARSET)與繁體中文語系(CHINESEBIG5_CHARSET)的程式,用移花接木法無法修改之,而這個方法正好解決了這個情形
作者:ru5j123