盒子
Box
文章目录
  1. 論VB6 Program如何在Windows 7+ 的環境中顯示香港字
    1. 0X00
    2. 0x01
    3. 0x02
    4. 0x03
  2. 完。

hongkongtext-in-vb6

論VB6 Program如何在Windows 7+ 的環境中顯示香港字

0X00

VB6,全稱Visual Basic 6…其實我本人其實唔係Programmer,基本上VB6點寫係一竅不通嘅,但係都要面對個User經常問嘅一個非常現實嘅問題:“點解隻字打出黎係問號”,當然,連Programmer本身都答唔到呢個問題,我作為一個Support好難答到一個成功嘅答案。所以都係通常交個波俾翻Programmer度/直接答System問題,冇得搞。但係面對澳門,呢個頗大機會要打到氹仔個氹字嘅時候,冇咩理由要個User長期打(乙水)當氹字…唔同香港,深水埗都係得1/18會寫出黎,冇辦法,都要研究下可唔可以處理。

0x01

當然,呢個解決方法唔係我諗出黎嘅…我唔可以攞credit,我只不過係負責寫翻出黎,希望有人睇到。

基本上,我地都研究過幾種方法去測試,首先係最簡單嘅同個文字輸入框轉顯示字體,Fail;跟住睇下有冇咩VB6本身有冇咩組件可以show翻d香港字,冇;最後絕招,直接造字,好彩最後冇咁做,如果唔係真係有排寫。

0x02

OK,根據同事MiyanoAkemi用咗兩個禮拜嘅時間研究,終於發現一個終極方案,可以完全解決Windowns 7或以上,VB6 program出唔到字嘅問題。

首先,要準備幾樣野

  1. 一部已經裝好的Windows XP SP3(VM/實體機冇所謂)
  2. 香港增补字符集 HKSCS-2001安裝檔
  3. 本文

實際原理大致就係,HKSCS-2001由於Win7本身已內置HKSCS-2004版,所以無法正常安裝,而VB6本身似乎不能接受舊版字符,令VB6在Win7中處理對應字時無法顯示。因此,要在一台XP裝完HKSCS-2001增補字符集後,將安裝後新增的字符集文檔Copy至Win7中,再在Windows 7的Registy中更改對應字串即可。

經過M同事的研究及分析,發現HKSCS-2001最主要做了兩件事,1.複製了一個新的National Language Support(NLS)字符集文件copy到%WINDIR%\system32中;2.在Registry中更改三個codepage字串,令電腦可以認到新的字符集。

因此,只需要在安裝了HKSCS-2001的XP中,打開%WINDIR%\system32,複製c_951.nls文件至Windows 7的%WINDIR%\system32;然後在Windows 7中打開Regedit,移至[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage],新建一個普通字串叫951,再edit其值做c_951.nls,最後將ACP及OEMCP的值都改咗951。然後Reboot,登入後就應該可以在VB6或類似舊Program(CorelDRAW 9)中顯示香港字。

Windows 10經過測試,用這個方法VB6亦可以顯示香港字。

0x03

最後忠告,此教學僅經簡單測試,本人對修改文件及註冊表後的系統穩定性不作保證,請自行斟酌風險。

完。