本页使用了标题或全文手工转换

Unicode

维基百科,自由的百科全书
跳转至: 导航搜索
Unicode标志

Unicode中文万国码、国际码、统一码、单一码)是电脑科学领域里的一项业界标准。它对世界上大部分的文字系统进行了整理、编码,使得电脑可以用更为简单的方式来呈现和处理文字。

Unicode伴随著通用字符集的标准而发展,同时也以书本的形式[1]对外发表。Unicode至今仍在不断增修,每个新版本都加入更多新的字符。目前最新的版本为2017年6月20日公布的10.0.0[2],已经收录超过十万个字符(第十万个字符在2005年获采纳)。Unicode涵盖的资料除了视觉上的字形、编码方法、标准的字符编码外,还包含了字符特性,如大小写字母。

Unicode发展由非营利机构统一码联盟负责,该机构致力于让Unicode方案取代既有的字符编码方案。因为既有的方案往往空间非常有限,亦不适用于多语环境。

Unicode备受认可,并广泛地应用于电脑软体的国际化与本地化过程。有很多新科技,如可扩展置标语言(Extensible Markup Language,简称:XML)、Java程式语言以及现代的作业系统,都采用Unicode编码。

起源与发展[编辑]

Unicode是为了解决传统的字元编码方案的局限而产生的,例如ISO 8859-1所定义的字元虽然在不同的国家中广泛地使用,可是在不同国家间却经常出现不相容的情况。很多传统的编码方式都有一个共同的问题,即容许电脑处理双语环境(通常使用拉丁字母以及其本地语言),但却无法同时支援多语言环境(指可同时处理多种语言混合的情况)。

Unicode编码包含了不同写法的字,如“ɑa”、“強/强”、“戶/户/戸”。然而在汉字方面引起了一字多形的认定争议(详见中日韩统一表意文字主题)。

在文字处理方面,统一码为每一个字符而非字形定义唯一的代码(即一个整数)。换句话说,统一码以一种抽象的方式(即数字)来处理字符,并将视觉上的演绎工作(例如字体大小、外观形状、字体形态、文体等)留给其他软件来处理,例如网页浏览器或是文字处理器。

目前,几乎所有电脑系统都支持基本拉丁字母,并各自支持不同的其他编码方式。Unicode为了和它们相互兼容,其首256字元保留给ISO 8859-1所定义的字元,使既有的西欧语系文字的转换不需特别考量;并且把大量相同的字元重复编到不同的字元码中去,使得旧有纷杂的编码方式得以和Unicode编码间互相直接转换,而不会遗失任何资讯。举例来说,全形格式区段包含了主要的拉丁字母的全形格式,在中文、日文、以及韩文字形当中,这些字元以全形的方式来呈现,而不以常见的半形形式显示,这对竖排文字和等宽排列文字有重要作用。

在表示一个Unicode的字元时,通常会用“U+”然后紧接着一组十六进位的数字来表示这一个字元。在基本多文种平面(英文:Basic Multilingual Plane,简写BMP。又称为“零号平面”、plane 0)里的所有字元,要用四个数字(即两个char,16bit ,例如U+4AE0,共支持六万多个字符);在零号平面以外的字元则需要使用五个或六个数字。旧版的Unicode标准使用相近的标记方法,但却有些微小差异:在Unicode 3.0里使用“U-”然后紧接着八个数字,而“U+”则必须随后紧接着四个数字。

标准[编辑]

位于美国加州的Unicode组织允许任何愿意支付会费的公司和个人加入,其成员包含了主要的电脑软硬体厂商,例如奥多比系统苹果公司惠普IBM微软施乐等。

20世纪80年代末,组成Unicode组织的商业机构,和国际合作的国际标准化组织因为电脑普及和资讯国际化的前提下,分别各自成立了Unicode组织[3]和ISO-10646工作小组。他们不久便发现对方的存在,大家为著相同的目的而工作。1991年,Unicode Consortium与ISO/IEC JTC1/SC2同意保持Unicode码表与ISO 10646标准保持兼容并密切协调各自标准进一步的扩展。虽然实际上两者的字集编码相同,但实质上两者确实为两个不同的标准。Unicode 1.1对应于ISO 10646-1:1993,Unicode 3.0对应于ISO 10646-1:2000,Unicode 3.2对应于ISO 10646-2:2001,Unicode 4.0对应于ISO 10646:2003,Unicode 5.0对应于ISO 10646:2003及附录1–3。

Unicode自版本2.0开始保持了向后兼容,即新的版本仅仅增加字符,原有字符不会被删除或更名。

统一码联盟在1991年首次发布了The Unicode Standard。Unicode的开发结合了国际标准化组织所制定的ISO/IEC 10646,即通用字元集。Unicode与ISO/IEC 10646在编码的运作原理相同,但The Unicode Standard包含了更详尽的实现资讯、涵盖了更细节的主题,诸如位元编码(bitwise encoding)、校对以及呈现等。The Unicode Standard也列举了诸多的字元特性,包含了那些必须支援两种阅读方向的文字(由左至右或由右至左的文字阅读方向,例如阿拉伯文是由右至左)。Unicode与ISO/IEC 10646这两个标准在术语上的使用有些微的不同。

在2005年,Unicode的第十万个字元被引入成为标准之一,该字元被用于马拉雅拉姆语

历史[编辑]

截至目前的Unicode各版本及其发布时间如下:

Unicode版本
版本 发布日期 书籍 对应ISO/IEC 10646版本 字母英语Script (Unicode) 字元
总计[a] 已知的扩增
1.0.0 1991年10月 ISBN 978-0-201-56788-5 (Vol.1) 24 7,161 最初包含的文字有:阿拉伯字母亚美尼亚字母孟加拉文注音符号西里尔字母天城文乔治亚字母希腊字母古吉拉特文古木基文谚文希伯来字母平假名卡纳达文片假名寮文字拉丁字母马拉雅拉姆文奥里亚文泰米尔文泰卢固文泰文字藏文[4]
1.0.1 1992年6月 ISBN 978-0-201-60845-8 (Vol.2) 25 28,359 定义中日韩统一表意文字最初的20,902个字[5]
1.1 1993年6月 ISO/IEC 10646-1:1993 24 34,233 于原有2,350个谚文字母的基础上新增4,306个谚文字母。移除藏文[6]
2.0 1996年7月 ISBN 978-0-201-48345-1 ISO/IEC 10646-1:1993与其第5-7修订版 25 38,950 移除原有的谚文字母设置,于新的编码范围更换成11,172个新的谚文字母。藏文重新加入,但编码位置更换。代理字符机制建立,并将第15与第16平面分配给私人使用区[7]
2.1 1998年5月 ISO/IEC 10646-1:1993与其第5-7修订版,以及第18修订版中新增的2个字元 25 38,952 新增欧元符号对象替换字符[8]
3.0 1999年9月 ISBN 978-0-201-61633-0 ISO/IEC 10646-1:2000 38 49,259 新增切罗基文埃塞俄比亚语高棉语蒙古语缅甸语欧甘字母卢恩字母僧伽罗语叙利亚语它拿字母加拿大原住民音节文字彝文,以及部分盲文图案。[9]
3.1 2001年3月 ISO/IEC 10646-1:2000

ISO/IEC 10646-2:2001

41 94,205 新增犹他字母哥特字母古意大利字母音乐符号拜占庭音乐符号,追加了42711个中日韩统一表意文字[10]
3.2 2002年3月 ISO/IEC 10646-1:2000与其第1修订版

ISO/IEC 10646-2:2001

45 95,221 新增菲律宾文字布锡文哈努诺文他加禄语塔格巴奴亚文[11]
4.0 2003年4月 ISBN 978-0-321-18578-5 ISO/IEC 10646:2003 52 96,447 新增塞浦路斯音节文字林布字母线形文字B奥斯曼亚字母萧伯纳字母德宏傣文乌加里特字母以及六十四卦[12]
4.1 2005年3月 ISO/IEC 10646:2003与其第1修订版 59 97,720 新增布吉文格拉哥里字母佉卢文西双版纳傣文古波斯语锡尔赫特文提非纳文科普特字母希腊语区块中分离了出来。新增了古希腊音乐符号[13]
5.0 2006年7月 ISBN 978-0-321-48091-0 ISO/IEC 10646:2003与其第1、2修订版,以及第3修订版中新增的4个字元 64 99,089 新增巴厘语楔形文字西非书面文八思巴文腓尼基字母[14]
5.1 2008年4月 ISO/IEC 10646:2003与其第1-4修订版 75 100,713 新增卡利亚语占婆字母克耶黎语雷布查语利西亚语吕底亚语桑塔利文拉让文索拉什特拉文巽他语瓦伊语。同时增加了斐斯托斯圆盘麻将多米诺骨牌上的符号。对缅甸语做了重要的补充,追加了手抄缩写的额外字母,追加了大写ẞ[15]
5.2 2009年10月 ISO/IEC 10646:2003与其第1-6修订版 90 107,361 新增阿维斯陀语巴姆文埃及象形文字加汀纳符号表,涵盖1071个符号),亚拉姆语巴拉维碑铭体帕提亚碑铭体爪哇语凯提文傈僳族字母曼尼普尔文古南阿拉伯字母古突厥语撒玛利亚语大潭文大越文。追加4,149个中日韩统一表意文字(CJK-C),同时扩展了古韩语吠陀梵语的字符。[16]
6.0 2010年10月 ISO/IEC 10646:2010与印度卢比符号英语Indian rupee sign 93 109,449 新增巴塔克字母婆罗米文字曼达字母纸牌符号,交通标志地图符号,炼金符号颜文字绘文字。追加222个额外的中日韩统一表意文字(CJK-D)。[17]
6.1 2012年1月 ISO/IEC 10646:2012 100 110,181 查克马字母, 麦罗埃文, 麦罗埃象形文字, 波拉德文字, 夏拉达文, 索拉僧平文字, and 泰克里文.[18]
6.2 2012年9月 ISO/IEC 10646:2012与土耳其里拉符号 100 110,182 土耳其里拉符号[19]
6.3 2013年9月 ISO/IEC 10646:2012与6个字元 100 110,187 5个双向排版符号。[20]
7.0 2014年6月 ISO/IEC 10646:2012与其第1、2修订版,以及俄罗斯卢布符号 123 113,021 新增巴萨字母高加索阿尔巴尼亚字母杜普雷严速记爱尔巴桑字母帕拉瓦文可吉文库达瓦迪文线形文字A马哈佳尼文摩尼教字母门得文字莫迪字母默文纳巴泰字母古北阿拉伯文古彼尔姆语字母杨松录苗文帕米拉文字袍清豪文诗篇巴列维文悉昙文字提尔胡塔文瓦兰齐地文以及装饰符号[21]
8.0 2015年6月 ISO/IEC 10646:2014与其第1修订版,以及乔治亚拉里符号、9个中日韩统一表意文字与41个表情符号[22] 129 120,737 增加阿洪姆文安纳托利亚象形文字哈坦文穆尔塔尼文古匈牙利字母书写符号,5,771个中日韩统一表意文字字符,切罗基语小写字母,以及五种绘文字肤色修改字符。[23]
9.0 2016年6月 ISO/IEC 10646:2014与其第1、2修订版,阿德拉姆字母、尼泊尔纽瓦字母、日本电视符号和74个绘文字表情与符号。[24] 135 128,237 新增阿德拉姆字母比奇舒奇文象雄文尼泊尔纽瓦字母欧塞奇字母西夏文以及74个绘文字[25]
10.0 2017年6月 ISO/IEC 10646:2017,新增56个绘文字符号,385个变体假名字符,和3个札那巴札尔字符[2] 139 136,755 札那巴札尔索永布文字马萨拉姆共地文字女书变体假名(非标准平假名),7,494个中日韩统一表意文字与56个绘文字[26]

Unicode的编码和实现[编辑]

大概来说,Unicode编码系统可分为编码方式和实现方式两个层次。

10大设计原则[编辑]

在《The Unicode Standard Version 6.2 – Core Specification》[27] ,给出了Unicode的十大设计原则:

  • Universality:提供单一、综合的字符集,编码一切现代与大部分历史文献的字符。
  • Efficiency:易于处理与分析。
  • Characters, not glyphs:字符,而不是字形。
  • Semantics:字符要有良好定义的语义
  • Plain text:仅限于文本字符
  • Logical order:默认内存表示是其逻辑序
  • Unification:把不同语言的同一书写系统(scripts)中相同字符统一起来。
  • Dynamic composition:附加符号可以动态组合。
  • Stability:已分配的字符与语义不再改变。
  • Convertibility:Unicode与其他著名字符集可以精确转换。

编码方式[编辑]

统一码的编码方式与ISO 10646通用字符集概念相对应。目前实际应用的统一码版本对应于UCS-2,使用16的编码空间。也就是每个字符占用2个字节。这样理论上一共最多可以表示216(即65536)个字符。基本满足各种语言的使用。实际上目前版本的统一码并未完全使用这16位编码,而是保留了大量空间以作为特殊使用或将来扩展。

上述16位统一码字符构成基本多文种平面。最新(但未实际广泛使用)的统一码版本定义了16个辅助平面,两者合起来至少需要占据21位的编码空间,比3字节略少。但事实上辅助平面字符仍然占用4字节编码空间,与UCS-4保持一致。未来版本会扩充到ISO 10646-1实现级别3,即涵盖UCS-4的所有字符。UCS-4是一个更大的尚未填充完全的31位字符集,加上恒为0的首位,共需占据32位,即4字节。理论上最多能表示231个字符,完全可以涵盖一切语言所用的符号。

基本多文种平面的字符的编码为U+hhhh,其中每个h代表一个十六进制数字,与UCS-2编码完全相同。而其对应的4字节UCS-4编码后两个字节一致,前两个字节则所有位均为0。

关于统一码和ISO 10646及UCS的详细关系,见通用字符集

实现方式[编辑]

Unicode的实现方式不同于编码方式。一个字符的Unicode编码是确定的。但是在实际传输过程中,由于不同系统平台的设计不一定一致,以及出于节省空间的目的,对Unicode编码的实现方式有所不同。Unicode的实现方式称为Unicode转换格式(Unicode Transformation Format,简称为UTF)

例如,如果一个仅包含基本7位ASCII字符的Unicode文件,如果每个字符都使用2字节的原Unicode编码传输,其第一字节的8位始终为0。这就造成了比较大的浪费。对于这种情况,可以使用UTF-8编码,这是一种变长编码,它将基本7位ASCII字符仍用7位编码表示,占用一个字节(首位补0)。而遇到与其他Unicode字符混合的情况,将按一定算法转换,每个字符使用1-3个字节编码,并利用首位为0或1进行识别。这样对以7位ASCII字符为主的西文文档就大幅节省了编码长度(具体方案参见UTF-8)。类似的,对未来会出现的需要4个字节的辅助平面字符和其他UCS-4扩充字符,2字节编码的UTF-16也需要通过一定的算法进行转换。

再如,如果直接使用与Unicode编码一致(仅限于BMP字符)的UTF-16编码,由于每个字符占用了两个字节,在麦金塔电脑Mac)机和个人电脑上,对字节顺序的理解是不一致的。这时同一字节流可能会被解释为不同内容,如某字符为十六进制编码4E59,按两个字节拆分为4E和59,在Mac上读取时是从低字节开始,那么在Mac OS会认为此4E59编码为594E,找到的字符为“奎”,而在Windows上从高字节开始读取,则编码为U+4E59的字符为“乙”。就是说在Windows下以UTF-16编码保存一个字符“乙”,在Mac OS环境下开启会显示成“奎”。此类情况说明UTF-16的编码顺序若不加以人为定义就可能发生混淆,于是在UTF-16编码实现方式中使用了大端序(Big-Endian,简写为UTF-16 BE)、小端序(Little-Endian,简写为UTF-16 LE)的概念,以及可附加的位元组顺序记号解决方案,目前在PC机上的Windows系统和Linux系统对于UTF-16编码默认使用UTF-16 LE。(具体方案参见UTF-16

此外Unicode的实现方式还包括UTF-7PunycodeCESU-8SCSUUTF-32GB18030等,这些实现方式有些仅在一定的国家和地区使用,有些则属于未来的规划方式。目前通用的实现方式是UTF-16小端序(LE)、UTF-16大端序(BE)和UTF-8。在微软公司Windows XP附带的记事本(Notepad)中,“另存为”对话框可以选择的四种编码方式除去非Unicode编码的ANSI(对于英文系统即ASCII编码,中文系统则为GB2312Big5编码)外,其余三种为“Unicode”(对应UTF-16 LE)、“Unicode big endian”(对应UTF-16 BE)和“UTF-8”。

目前辅助平面的工作主要集中在第二和第三平面的中日韩统一表意文字中,因此包括GBKGB18030Big5简体中文繁体中文日文韩文以及越南喃字的各种编码与Unicode的协调性被重点关注。考虑到Unicode最终要涵盖所有的字符。从某种意义而言,这些编码方式也可视作Unicode的出现于其之前的既成事实的实现方式,如同ASCII及其扩展Latin-1一样,后两者的字符在16位Unicode编码空间中的编码第一字节各位全为0,第二字节编码与原编码完全一致。但上述东亚语言编码与Unicode编码的对应关系要复杂得多。

Unicode字符平面映射[编辑]

非Unicode环境[编辑]

在非Unicode环境下,由于不同国家和地区采用的字符集不一致,很可能出现无法正常显示所有字符的情况。微软公司使用了代码页(Codepage)转换表的技术来过渡性的部分解决这一问题,即通过指定的转换表将非Unicode的字符编码转换为同一字符对应的系统内部使用的Unicode编码。可以在“语言与区域设置”中选择一个代码页作为非Unicode编码所采用的默认编码方式,如936为简体中文GB码,950为繁体中文Big5(皆指PC上使用的)。在这种情况下,一些非英语的欧洲语言编写的软件和文档很可能出现乱码。而将代码页设置为相应语言中文处理又会出现问题,这一情况无法避免。只有完全采用统一编码才能彻底解决这些问题,但目前尚无法做到这一点。

代码页技术现在广泛为各种平台所采用。UTF-7的代码页是65000,UTF-8的代码页是65001。

XML和Unicode[编辑]

XML及其子集XHTML采用UTF-8作为标准字集,理论上我们可以在各种支持XML标准的浏览器上显示任何地区文字的网页,只要电脑本身安装有合适的字体即可。可以利用&#nnn;的格式显示特定的字符。nnn代表该字符的十进制Unicode代码。如果采用十六进制代码,在编码之前加上x字符即可。但部分旧版本的浏览器可能无法识别十六进制代码。

过去电脑编码的8位标准,使每个国家都只按国家使用的字符而编定各自的编码系统;而对于部份字符系统比较复杂的语言,如越南语,又或者东亚国家的大型字符集,都不能在8位的环境下正常显示。

只是最近才有在文本中对十六进制的支持,那么旧版本的浏览器显示那些字符或许可能有问题-大概首先会遇到的一个问题只是在对于大于8位Unicode字符的显示。解决这个问题的普遍做法仍然是将其中的十六进制码转换成一个十进制码(例如:♠代替♠)。

也有一些字符集标准将一些常用的标志存放在字符内码外面,那么你可能使用象这样的文本标志来表示一个长划(—)的情况,即使它的字符内码已经被使用,这些标准也不包含那个字符。

然而部分由于Unicode版本发展原因,很多浏览器只能显示UCS-2完整字符集,也即现在使用的Unicode版本中的一个小子集。下表可以检验您的浏览器如何显示各种Unicode代码:

代码 字符标准名称(英语) 在浏览器上的显示
A 大写拉丁字母“A” A
ß 小写拉丁字母“Sharp S” ß
þ 小写拉丁字母“Thorn” þ
Δ 大写希腊字母“Delta” Δ
Й 大写斯拉夫字母“Short I” Й
ק 希伯来字母“Qof” ק
م 阿拉伯字母“Meem” م
๗ 泰文数字7
ቐ 埃塞俄比亚音节文字“Qha”
あ 日语平假名“A”
ア 日语片假名“A”
叶 简体汉字“叶”
葉 繁体汉字“葉”
엽 韩国音节文字“Yeop”

一些多语言支持的网页浏览器,比如微软Windows系统的Internet Explorer 5.5及以上版本,以及跨平台的浏览器MozillaNetscape 6,可以在安装时根据需要动态地使用相应的字符集,预先安装了合适的语言包,就可以同时显示页面上的各种Unicode字符。Internet Explorer 5.5还提出用户可以在需要新字体时,即装即用。另外的浏览器如Netscape Navigator 4.77,则只能显示跟页面编码相应字符集中的文字。当你使用后一种浏览器时,你不大可能预先安装所有的字体,即使有了字体,浏览器也不一定能将这些字体完全应用起来。可能遇到的情况是,这种浏览器只能够显示部分文字,因为它们是按照标准进行编码,尽管理论上在兼容的系统中,只要有了相应的Code2000字体,就可以正确显示。一种变通的办法,是将某些少见的字符,通过“名称实体引用”的方式来使用。

输入方法[编辑]

不同的操作系统,各有直接输入Unicode字符的方法:

SGMLHTMLXML的文本中,使用字符值引用字符实体引用表示一个Unicode字符。

中文输入法[编辑]

截至2011年10月,可以使用微软拼音2003或2007版本,仓颉输入法第三代第五代第六代版本,郑码Unicode版本,海峰五笔9.3版本,新注音输入法VimIM进行输入。

  • 微软拼音输入法启动状态下,单击语言栏上的“功能选单”按钮,指向“辅助输入法”即可发现“Unicode码输入方式”,利用它可以直接输入Unicode相应十六进制值的方式输入相应文字。例如中文“胥”输入“5066”,朝鲜文字“셅”输入“c145”(不需要在前面加0x或x)。
  • 仓颉输入法已为Unicode汉字、类汉字编码,可以在仓颉输入法方式下通过仓颉码输入方式输入Unicode内的中日韩汉字及韩文。以仓颉输入法第五代为例,例如汉字“㗎”输入“口大口木”,汉字“胥”输入“弓人月”,汉字“㿱”输入“手中木竹水”,朝鲜文字“닮”输入“尸卜尸女口”。
  • 郑码已为Unicode汉字、类汉字编码,可以在郑码输入法方式下通过郑码字码输入方式输入Unicode内的中日韩汉字及韩文。例如汉字“㗎”输入“JYJF”,汉字“胥”输入“XIQ”,汉字“㿱”输入“DPXI”,朝鲜文字“길”输入“XIYY”。
  • 海峰五笔此输入法已经直接支持透过五笔码输入方式输入Unicode内的任意中日韩汉字,但无法使用键入Unicode码的方式输入。例如汉字(Unicode部分)“㗎”为“keks”,CJK扩展B区的“𣿱”为“iyho”和CJK扩展C区的“𫆦”为“muih”。
  • 注音输入法在输入法启动状态时,打入键盘上的“多功能前导字元键”(及通用键盘上之“`”),第一次使用会弹出说明。输入Unicode字元“胥”则是在键盘上键入“`U5066”。而韩语中的“셅”,则输入“`UC145”。而要输入日语自制汉字“峠”,则是“`U5CE0”。
  • VimIM在Vim环境中,可以直接键入十进制或十六进制Unicode码。既不需要启动输入法,也不需要码表。
  • 呒虾米输入法,支援Unicode,以26个英文字母为组字按键,支援基本正体中文、简体中文外,还可直接输入符号、日文汉字平假名片假名

日文输入法[编辑]

使用Microsoft IME 2007,可以在IME PAD里找到Unicode的点击表。点击字符即可输入。选择字体可以预览字符效果。

其他[编辑]

除了输入法外,操作系统也会提供另外几种方法输入Unicode。像是Windows 2000之后的Windows系统就提供一个可点击的字符映射表。又或者在Microsoft Word下,按下Alt键不放,输入0和某个字符的Unicode编码(十进制),再松开Alt键即可得到该字符,如Alt + 033865会得到Unicode字元。另外按Alt + X组合键,MS Word也会将光标前面的字符同其十六进制的四位Unicode编码进行互相转换。

汉字问题[编辑]

在Unicode 5.0的99089个字符中,有71226个字符与汉字有关。它们的分布如下:

Block名称 开始码位 结束码位 字符数
CJK统一汉字 4E00 9FBB 20924
CJK统一汉字扩充A 3400 4DB5 6582
CJK统一汉字扩充B 20000 2A6D6 42711
CJK兼容汉字 F900 FA2D 302
CJK兼容汉字 FA30 FA6A 59
CJK兼容汉字 FA70 FAD9 106
CJK兼容汉字 2F800 2FA1D 542

Unicode早期版本中,CJK统一汉字区的范围是0x4E00-0x9FA5,包含20902个汉字。当前版本的Unicode增加了22个字符,码位是0x9FA6-0x9FBB。

动态组字[编辑]

统一码这种为数万汉字逐一编码的方式很浪费资源,且要把汉字增加到标准中也并不容易,因此去研究以汉字部件产生汉字的方法(如动态组字),期望取代为汉字逐一编码的方法。Unicode委员会在关于中文和日语的常用问题列表[28]里回答了此问题。主要问题是汉字中各个组件的相对大小不是固定的。比如“员”字,由“口”和“贝”组成,而“呗”也是由“口”和“贝”组成,但其相对位置和大小并不一致。还有一些其他原因,比如字符比较和排序时需要先对编码流进行分析后才能得到各个字符,增加处理程序复杂性等。

收录讹字[编辑]

由于中国历代字书有收录讹字的习惯,因此Unicode编码中收入大量讹字,占据大量空间,引发批评[来源请求]。电脑文件中若使用错讹字,在用正确字做检索时,用错讹字写出的同一个词语无法检出。

注释[编辑]

  1. ^ The number of characters listed for each version of Unicode is the total number of graphic, format and control characters (i.e., excluding private-use characters, noncharacters and surrogate code points).

参考文献[编辑]

  1. ^ The Unicode Standard 第五版. Addison-Wesley Professional. ISBN 0321480910. 
  2. ^ 2.0 2.1 Unicode 10.0.0. Unicode Consortium. [2017-06-20]. 
  3. ^ Unicode
  4. ^ Unicode Data 1.0.0. [2010-03-16]. 
  5. ^ Unicode Data 1.0.1. [2010-03-16]. 
  6. ^ Unicode Data 1995. [2010-03-16]. 
  7. ^ Unicode Data-2.0.14. [2010-03-16]. 
  8. ^ Unicode Data-2.1.2. [2010-03-16]. 
  9. ^ Unicode Data-3.0.0. [2010-03-16]. 
  10. ^ Unicode Data-3.1.0. [2010-03-16]. 
  11. ^ Unicode Data-3.2.0. [2010-03-16]. 
  12. ^ Unicode Data-4.0.0. [2010-03-16]. 
  13. ^ Unicode Data. [2010-03-16]. 
  14. ^ Unicode Data 5.0.0. [2010-03-17]. 
  15. ^ Unicode Data 5.1.0. [2010-03-17]. 
  16. ^ Unicode Data 5.2.0. [2010-03-17]. 
  17. ^ Unicode Data 6.0.0. [2010-10-11]. 
  18. ^ Unicode Data 6.1.0. [2012-01-31]. 
  19. ^ Unicode Data 6.2.0. [2012-09-26]. 
  20. ^ Unicode Data 6.3.0. [2013-09-30]. 
  21. ^ Unicode Data 7.0.0. [2014-06-15]. 
  22. ^ Unicode 8.0.0. Unicode Consortium. [2015-06-17]. 
  23. ^ Unicode Data 8.0.0. [2015-06-17]. 
  24. ^ Unicode 9.0.0. Unicode Consortium. [2016-06-21]. 
  25. ^ Unicode Data 9.0.0. [2016-06-21]. 
  26. ^ Unicode Data 10.0.0. [2017-06-20]. 
  27. ^ The Unicode Standard, Version 6.2, 2012 Unicode, Inc. Chapter 2 General Structure 2.2 Unicode Design Principles
  28. ^ Why doesn't the Unicode Standard adopt a compositional model for encoding Han ideographs? Wouldn't that save a large number of code points?

外部链接[编辑]

Wikibooks-logo.svg
您可以在维基教科书中查找此百科条目的相关电子教程:

参见[编辑]