身為中文編碼解析工具的開發者,一直以為自己"略懂"中文編碼,這兩天再度見證"學海無涯",默默收回"略懂"二字...

從以下畫面說起:

五種瀏覽器(IE, Opera, Chrome, Firefox, Safari)一次排開檢視同一個網頁,IE10再度成為瀏覽器家族的黑羊,只有它無法顯示"滙"及"衞"兩個中文字。

開啟notepad++看看hkscs-test.htm有何奧妙之處?

值得注意的地方有三處:

1) charset=Big5-HKSCS 
2) 檔案為ANSI編碼 
3) notepad++跟IE一樣,無法解析ANSI編碼的"滙"跟"衞"

回頭檢視瀏覽器網頁編碼狀態,很快找出IE無法正確顯示的原因。IE將網頁識別為BIG5編碼,其餘瀏覽器則正確地依網頁宣告採用Big5-HKSCS。

由此推論,IE問題出在未正確採用Big5-HKSCS解析網頁。若將網頁宣告改為chartset=big5,則其他瀏覽器也會出現異常,且出現的亂碼不同。

關鍵在於Big5-HKSCS,過去摸過Big5、GB2312、UTF-8、UCS,就是沒跟它交手過。查了資料後才正式認識它,Big5-HKSCS的正式名稱是香港增補字符集(Hong Kong Supplementary Character Set,簡稱HKSCS)是香港政府基於繁體中文電腦操作環境中最流行的大五碼(Big-5)之上擴展的字符集標準,是現時香港的中文資訊交換內碼標準。

用中文編碼解析工具檢查,可查出"滙"的Big5-HKSCS編碼是FA C0,"衞"則是8F C0。

找到一個日本網站提供Big5與Big5-HKSCS完整對照表,驗證這兩個字碼就是Big5-HKSCS中的"滙"及"衛"無誤,而其在Big5無對應字元。

開啟Windows 7 VM做測試,若將System Locale設成Chinese (Traditional, Hong Kong, S.A.R.),notepad++及Notepad便能正確顯示HKSCS字集的額外文字,但IE11仍不行。網站上的討論傾向IE只認得標準Big5,不支援Big5-HKSCS(但我沒能找到官方文件證實),如真要看charset=Big5-HKSCS的網頁,請改用其他瀏覽器。

心得: 開啟Big5-HKSCS網頁請使用非IE瀏覽器,如果你是網頁開發人員,請回歸Unicode,使用UTF-8編碼才是王道!


Comments

# by Sam

我也預到類似問題 , 最後更新了 IE9 Security Update 後可以看到那些香港字了: http://support.microsoft.com/kb/2833065/zh-tw

# by Jeffrey

to Sam, 謝謝補充,已筆記。

Post a comment