香港增补字符集(HKSCS) 背景介绍

背景资料

========

目前,大部份不同語文的電腦系統,都有不同的編碼標準。如中文的系統就有BIG5和GB2312/GBK。各種文字有不同的文字編碼,不同系統在文字碼中轉換,會出現很多問題,最明顯是由於系統不能正確解析,造成所謂『亂碼』的現象。

因此,世界上主要的電腦廠商均推動利用Unicode(統一碼),將世界上幾十種文字編碼整合一起為一種編碼,結果可以讓多種文字在同一文件中容易地顯示,也毋須作編碼轉換。Unicode是由美國各大電腦廠商組成的Unicode策進會推動。理論上,這種編碼可以將世界上常用的文字都涵蓋進去,減少電腦商開發國外市場的問題。

香港主要利用的傳統繁體中文電腦系統,都是利用大五碼(BIG5)作為編碼,繁體版的Windows 3.1/9x都是利用BIG5作為系統的編碼,BIG5故此也被稱為Windows ANSI code page for Traditional Chinese(也就是CP 950),而BIG5編碼利用十六進元位,利用兩個bytes代表一個中文字。

BIG5編碼是在台灣開發,故此許多香港的常用字都不包含在內。BIG5編碼之內,如何涵蓋特殊字,一直引起不少混亂。電腦用戶如果要在電腦上使用這些所謂特殊的字符,唯有在使用者造字區(User Defined Area, UDA)為這些字符編配內碼。用戶自行造字對獨立運作的電腦不會構成問題,所以一旦涉及資料交換,用戶定義造字就不能在另一方正確顯示,就會引起溝通的問題。

為了打破香港常用字在文字編碼的溝通限制,香港政府與許多業界人士,為香港常用而又不在Big5內的單字,製作了約五千個字的編碼,簡稱為香港增補字符集(Hong Kong Supplementary Character Set, HKSCS)。

在香港增補字符集出現之前,香港政府亦公佈過一套稱為政府通用字庫Government Chinese Character Set (GCCS) (或稱香港政府指定3049外字集),共收錄了3,049個常用字,這些字利用BIG5編碼的使用者造字字集End User Defined Character(EUDC)內,而字集的套裝包括EUDC字體和EUDC的輸入法。

而新的香港增補字符集(HKSCS),更包括了Big5和ISO 10646的編碼。故此,HKSCS的Big5版,實際上就是補充了GCCS的增強版。

這些在EUDC的Big5使用者造字字集,按照一般Unicode的規定,都已對應在Unicode的私人使用區Private Use Area(PUA)內。而Microsoft的NT也是如此。原則上,私人使用區是供廠商和用戶自行定義字符的字區,這個區域是供個人和廠商作私人用途,不作資料交換用途。

何以會有上述的私人使用區Private Use Area(PUA)在Unicode的編碼內存在?

以上提及,Unicode要將成千上萬的文字收進同一個共通的編碼內,在兼顧經濟的原則下,不管東方或西方文字,每個字在Unicode的Basic Multilingual Plane (BMP)中都可一律以兩個Bytes(即16 Bits)進行編碼來代表。以簡單的運算,就至少能有2 16 = 65536種不同組合,足以應付大多數文字編碼的需要。

Unicode的技術文件,大家可以經常看到ISO 10646這個名詞。如上述HKSCS就具備一套ISO 10646的編碼。ISO是總部設於瑞士的國際標準局的縮寫。ISO頒布的第10646號標準名為UCS(Universal Character Set),也就是世界通用字集。ISO是由世界各地的政府代表商定國際標準的官方組織,就Unicode由電腦業界組成的性質不同。

但是,Unicode策進會和ISO的UCS一直緊密合作,讓Unicode和ISO 10646保持一致。因此,Unicode和ISO 10646使用完全相同的字庫。

可是,由於漢字以方塊字構成,所佔的分配空間非常驚人。Unicode只有六萬多字的分配空間,實在不敷應用。故此Unicode和UCS都採用了『中日韓文整合』(CJK Unification),把中、日、韓的漢字,以同一字碼來代表,以節省寶貴的定址空間。

CJK Unification內的漢字,在Unicode中稱為Unihan(統漢字)。但是,統漢字仍不能包含所有不常用的漢字,其中也包括部份香港增補字符集(HKSCS)或者香港政府指定3049外字集(GCCS)之內的部份字符。

可是,事實上,不少在香港增補字符集(HKSCS)或者政府通用字庫(或稱香港政府指定3049外字集)(GCCS)內的字符,目前已經在Unicode內提供了編碼。故此,當香港增補字符集的BIG5內的使用者造字字集End User Defined Character(EUDC),安裝到Windows NT系統上,利用正常的EUDC/PUA對應,每一個字符就會有兩個碼位(Code points),代表該字符的編碼。其中一個在CJK區的Unicode碼位,另一個在PUA區。

假設一份含GCCS的Big5編碼文件,轉換成Unicode編碼文件,GCCS的字符就會保留在PUA區,而CJK區代表該字的字形就沒有使用。反之如果文件從Unicode轉成Big5,CJK區代表該GCCS字符的碼位,亦會因對應到Big5的EUDC區而失掉,再轉換成Unicode時不能找到位於CJK區的碼位。

政府通用字庫(GCCS)的定義

==========

顧名思義,政府通用字庫包括了3,049個字符。上述字符和Unicode的關係如下:

已跟Unicode合併的字符 1,621個

已經Extension-A合併的字符 311個

須用新字符表達 1,117個

GCCS總數 3,049個

香港增補字符集的定義

==========

香港增補字符集(HKSCS)可以被視為政府通用字庫的第二版。其中包括了政府通用字庫的原用字符(其中119個字符已因與現存的Big5碼合併而取消)。換言之,香港增補字符集包括原來的政府通用字,再加上新增的字符。

在二零零五年五月,香港特區政府公布香港增補字符集-2004 (HKSCS-2004),除再加上新增的字符外, HKSCS-2004在技術上配合國際標準化組織在二零零四年四月公布的「ISO/IEC 10646:2003」和其修訂本。換言之,HKSCS-2004已再沒有利用Unicode 的私人使用區(PUA)。以下本文只集中解釋舊版香港增補字符集和Unicode私人使用區(PUA)的使用問題及其解決方案。

Unicode和香港增補字符集的關係如下:

Microsoft 對應Unicode及香港增補字符集解決方案的一般原則:

  1. 方案將集中於儘量利用現時的Unicode,來表達香港增補字符集內的字符。作業系統內會加進新的字體和編碼轉換對應表,為政府通用字庫提供反向兼容。不過,要將舊的政府通用字庫轉換成新的香港增補字符集,則要應用程式負責。以往的政府通用字庫完全利用Unicode 的私人使用區(PUA),而新的香港增補字符集則會利用所有的已定義Unicode字符(包括位於CJK區和擴充A區)
  2. 新的編碼轉換對應表的內容包括了以往cp 950和加上香港增補字符集在Big5的使用者造字區(EUA)所定義的碼位(Code Point)。
  3. 為了向香港的Big5用戶和舊的Big5應用程式提供反向兼容,Big5/950支援將會轉為利用新的編碼轉換對應表。

内容摘自一份文档, 朋友所传, 不知出处.

希望网友补充.

HKSCS的更多相关文章

  1. Python中文乱码

    1,注意:请使用智慧型浏览器 "CHROME" 配合理解和运作本文中提到的程序. 2,提示:谷歌的CHROME浏览器是迄今为止最智慧的浏览器,没有之一,只有第一. 3,谷歌的CHR ...

  2. Base64编码原理与应用

    本文内容转自网络,如需详细内容,请参考相关网址. http://my.oschina.net/goal/blog/201032 代码参考:http://blog.csdn.net/prsniper/a ...

  3. BOM的来源是不可能出现的字符,GB2312双字节高位都是1,Unicode理论的根本缺陷导致UTF8的诞生

    Unicode字符编码规范   http://www.aoxiang.org 2006-4-2 10:48:02Unicode是一种字符编码规范 . 先从ASCII说起.ASCII是用来表示英文字符的 ...

  4. Ansi,UTF8,Unicode,ASCII编码的差别

    近日须要不同的编码,关于上述编码,一直迷迷糊糊,查了些资料,总算大致了解了,以下全是从网上搜来的: 1.  ASCII和Ansi编码    字符内码(charcter code)指的是用来代表字符的内 ...

  5. Globalization Guide for Oracle Applications Release 12

    Section 1: Overview Section 2: Installing Section 3: Configuring Section 4: Maintaining Section 5: U ...

  6. Informatica_(6)性能调优

    六.实战汇总31.powercenter 字符集 了解源或者目标数据库的字符集,并在Powercenter服务器上设置相关的环境变量或者完成相关的设置,不同的数据库有不同的设置方法: 多数字符集的问题 ...

  7. 转:从头开始编写基于隐含马尔可夫模型HMM的中文分词器

    http://blog.csdn.net/guixunlong/article/details/8925990 从头开始编写基于隐含马尔可夫模型HMM的中文分词器之一 - 资源篇 首先感谢52nlp的 ...

  8. python 编码方式大全 fr = open(filename_r,encoding='cp852')

    7.8.3. Standard Encodings Python comes with a number of codecs built-in, either implemented as C fun ...

  9. Ansi,UTF8,Unicode,ASCII编码的区别 ---我看完了 明白了很多

    来自:http://blog.csdn.net/xiongxiao/article/details/3741731 ------------------------------------------ ...

随机推荐

  1. 修改MySQL数据库字符集

      Preface       I've demonstrated how to change character set in Oracle database in my previous blog ...

  2. python3 打印九九乘法口诀表

    for i in range(1, 10): for j in range(1, i+1): # print(f'{i}×{j}={i*j}', end='\t') print('%d×%d=%d' ...

  3. winform小知识

    1.得到控制台或者winform程序在debug目录下生成的exe路径 建议使用:AppDomain.CurrentDomain.BaseDirectory或者Assembly.GetExecutin ...

  4. 【志银】nginx_php_mysql_phpMyAdmin配置(Windows)

    ✄更新中... 更新日期:2018.11.22 ★版本说明+快捷下载(官网)  nginx  nginx-1.14.1  http://nginx.org/download/nginx-1.14.1. ...

  5. 积累: .net里有个线程安全的int+1类

     Interlocked.Increment(ref id); 

  6. NSOperation 开发

    目录 1.简介 2.Operation对象 3.自定义Operation对象 4.通过Operation Queues运行Operation对象 5.手动运行Operation对象 一.简介 Coco ...

  7. Multiplication Game(博弈论)

    Description Alice and Bob are in their class doing drills on multiplication and division. They quick ...

  8. Android自复制传播APP原理学习(翻译)

     Android自复制传播APP原理学习(翻译) 1 背景介绍 论文链接:http://arxiv.org/abs/1511.00444 项目地址:https://github.com/Tribler ...

  9. POJ1163 The Triangle

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 44997   Accepted: 27174 Description 73 ...

  10. 百度之星初赛(A)——T1

    小C的倍数问题 Problem Description 根据小学数学的知识,我们知道一个正整数x是3的倍数的条件是x每一位加起来的和是3的倍数.反之,如果一个数每一位加起来是3的倍数,则这个数肯定是3 ...