HKSCS
香港增补字符集(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及香港增補字符集解決方案的一般原則:
- 方案將集中於儘量利用現時的Unicode,來表達香港增補字符集內的字符。作業系統內會加進新的字體和編碼轉換對應表,為政府通用字庫提供反向兼容。不過,要將舊的政府通用字庫轉換成新的香港增補字符集,則要應用程式負責。以往的政府通用字庫完全利用Unicode 的私人使用區(PUA),而新的香港增補字符集則會利用所有的已定義Unicode字符(包括位於CJK區和擴充A區)
- 新的編碼轉換對應表的內容包括了以往cp 950和加上香港增補字符集在Big5的使用者造字區(EUA)所定義的碼位(Code Point)。
- 為了向香港的Big5用戶和舊的Big5應用程式提供反向兼容,Big5/950支援將會轉為利用新的編碼轉換對應表。
内容摘自一份文档, 朋友所传, 不知出处.
希望网友补充.
HKSCS的更多相关文章
- Python中文乱码
1,注意:请使用智慧型浏览器 "CHROME" 配合理解和运作本文中提到的程序. 2,提示:谷歌的CHROME浏览器是迄今为止最智慧的浏览器,没有之一,只有第一. 3,谷歌的CHR ...
- Base64编码原理与应用
本文内容转自网络,如需详细内容,请参考相关网址. http://my.oschina.net/goal/blog/201032 代码参考:http://blog.csdn.net/prsniper/a ...
- BOM的来源是不可能出现的字符,GB2312双字节高位都是1,Unicode理论的根本缺陷导致UTF8的诞生
Unicode字符编码规范 http://www.aoxiang.org 2006-4-2 10:48:02Unicode是一种字符编码规范 . 先从ASCII说起.ASCII是用来表示英文字符的 ...
- Ansi,UTF8,Unicode,ASCII编码的差别
近日须要不同的编码,关于上述编码,一直迷迷糊糊,查了些资料,总算大致了解了,以下全是从网上搜来的: 1. ASCII和Ansi编码 字符内码(charcter code)指的是用来代表字符的内 ...
- Globalization Guide for Oracle Applications Release 12
Section 1: Overview Section 2: Installing Section 3: Configuring Section 4: Maintaining Section 5: U ...
- Informatica_(6)性能调优
六.实战汇总31.powercenter 字符集 了解源或者目标数据库的字符集,并在Powercenter服务器上设置相关的环境变量或者完成相关的设置,不同的数据库有不同的设置方法: 多数字符集的问题 ...
- 转:从头开始编写基于隐含马尔可夫模型HMM的中文分词器
http://blog.csdn.net/guixunlong/article/details/8925990 从头开始编写基于隐含马尔可夫模型HMM的中文分词器之一 - 资源篇 首先感谢52nlp的 ...
- 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 ...
- Ansi,UTF8,Unicode,ASCII编码的区别 ---我看完了 明白了很多
来自:http://blog.csdn.net/xiongxiao/article/details/3741731 ------------------------------------------ ...
随机推荐
- 在SqlServer中通过SQL语句实现树状查询
CREATE PROCEDURE [dbo].[GetTree] @Id int AS BEGIN with cte as ( as lvl from Entity where Id = @Id un ...
- Python全栈工程师(递归函数、闭包)
ParisGabriel 每天坚持手写 一天一篇 决定坚持几年 全栈工程师 Python人工智能从入门到精通 函数式编程: 是指用一系列函数解决问题 每一个函数完成细 ...
- 一些优秀的SLAM博主
http://blog.csdn.net/u010566411 http://blog.csdn.net/qq_18661939/article/details/51782376 http://www ...
- rownum浅谈(二)
上篇说到rownum和order by及索引列的关系,明白了通过构建一个子查询把查询结果固定住再取数就可以了 .还是取最近10条创建的用户: select * from (select u.* fro ...
- HDU 4655 Cut Pieces 找规律+简单计数
解法参考:http://blog.csdn.net/a601025382s/article/details/9840125 #include <cstdio> #include <c ...
- Mac平台重新设置MySQL的root密码
Mac OS X - 重置 MySQL Root 密码 您是否忘记了Mac OS 的MySQL的root密码? 通过以下4步就可重新设置新密码: 1. 停止 mysql server. 通常是在 ...
- TensorFlow 模型文件
在这篇 TensorFlow 教程中,我们将学习如下内容: TensorFlow 模型文件是怎么样的? 如何保存一个 TensorFlow 模型? 如何恢复一个 TensorFlow 模型? 如何使用 ...
- 命令__shell变量$#,$@,$0,$1,$2的含义解释
linux中shell变量$#,$@,$0,$1,$2的含义解释:变量说明:$$ Shell本身的PID(ProcessID)$! Shell最后运行的后台Process的PID$? 最后运行的命令的 ...
- CSU 2136 ——湖南多校对抗赛 I
2136: 统帅三军! Submit Page Summary Time Limit: 1 Sec Memory Limit: 128 Mb Submitted: 55 ...
- SHTSC2017酱油记~~~
一转眼,SHTSC2017就结束了呢... [前记] noip2016的时候,day2由于各种奇奇怪怪的原因,于是策略上犯错误,然后直接滚粗... 作为一个SHTSC2016年就莫名其妙当上B队队长的 ...