字符编码-- Unicode(1991年)

第1节 Unicode

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

Unicode伴随着通用字符集的标准而发展,同时也以书本的形式对外发表。Unicode至今仍在不断增修,每个新版本都加入更多新的字符。目前

最新的版本为2014年6月16日公布的7.0.0,已收入超过十万个字符(第十万个字符在2005年获采纳)。Unicode涵盖的数据除了视觉上的字形、编码方法、标准的字符编码外,还包含了字符特性,如大小写字母。

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

Unicode备受认可,并广泛地应用于电脑软件的国际化与本地化过程。有很多新科技,如可扩展置标语言、Java编程语言以及现代的操作系统,都采用Unicode编码。

起源与发展

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

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

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

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

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

标准

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

20世纪80年代末,组成Unicode组织的商业机构,和国际合作的国际标准化组织因为电脑普及和信息国际化的前提下,分别各自成立了Unicode组织和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 1.0:1991年10月

Unicode 1.0.1:1992年6月

Unicode 1.1:1993年6月

Unicode 2.0:1997年7月

Unicode 2.1:1998年5月

Unicode 2.1.2:1998年5月

Unicode 3.0:1999年9月;涵盖了来自ISO 10646-1的十六比特通用字符集(UCS)基本多文种平面(Basic Multilingual Plane)

Unicode 3.1:2001年3月;新增从ISO 10646-2定义的辅助平面(Supplementary Planes)

Unicode 3.2:2002年3月

Unicode 4.0:2003年4月

Unicode 4.0.1:2004年3月

Unicode 4.1:2005年3月

Unicode 5.0:2006年7月

Unicode 5.1:2008年4月

Unicode 5.2:2009年10月

Unicode 6.0:2010年10月

Unicode 6.1:2012年1月31日

Unicode 6.2:2012年9月

Unicode 6.3:2013年9月30日

Unicode 7.0:2014年6月15日

Unicode的编码和实现

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

编码方式

统一码的编码方式与ISO 10646的通用字符集概念相对应。目前实际应用的统一码版本对应于UCS-2,使用16位的编码。也就是每个字符占用2个字这样理论上一共最多可以表示2^16(即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-EndianUTF-16 BE)、小端序(Little-EndianUTF-16 LE)的概念,以及可附加的字节顺序记号解决方案,目前在PC机上的Windows系统和Linux系统对于UTF-16编码默认使用UTF-16 LE。(具体方案参见UTF-16)

此外Unicode的实现方式还包括UTF-7、Punycode、CESU-8、SCSU、UTF-32、GB18030等,这些实现方式有些仅在一定的国家和地区使用,有些则属于未来的规划方式。目前通用的实现方式是UTF-16小端序(LE)、UTF-16大端序(BE)和UTF-8

在微软公司Windows XP附带的记事本(Notepad)中,“另存为”对话框可以选择的四种编码方式除去非Unicode编码的ANSI(对于英文系统即ASCII编码,中文系统则为GB2312或Big5编码)外,其余三种为“Unicode”(对应UTF-16 LE)、“Unicode big endian”(对应UTF-16 BE)和“UTF-8”。

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

Unicode字符平面映射

目前的Unicode字符分为17组编排,每组称为平面(Plane),而每平面拥有65536(即216)个代码点。然而目前只用了少数平面。

 

平面       始末字符值           中文名称              英文名称

0号平面 U+0000 - U+FFFF            基本多文种平面    Basic Multilingual Plane,简称BMP

1号平面 U+10000 - U+1FFFF        多文种补充平面    Supplementary Multilingual Plane,简称SMP

2号平面 U+20000 - U+2FFFF        表意文字补充平面              Supplementary Ideographic Plane,简称SIP

3号平面 U+30000 - U+3FFFF        表意文字第三平面(未正式使用[1])             Tertiary Ideographic Plane,简称TIP

4号平面

13号平面             U+40000 - U+DFFFF       (尚未使用)      

14号平面             U+E0000 - U+EFFFF       特别用途补充平面              Supplementary Special-purpose Plane,简称SSP

15号平面             U+F0000 - U+FFFFF       保留作为私人使用区(A区)[2]      Private Use Area-A,简称PUA-A

16号平面             U+100000 - U+10FFFF    保留作为私人使用区(B区)[2]      Private Use Area-B,简称PUA-B

要有更详细的描述,请参阅:基本多文种平面与补充平面。

基本多文种平面

基本多文种平面(Basic Multilingual Plane, BMP),或称第0平面或0号平面(Plane 0),是Unicode中的一个编码区段。编码从U+0000至U+FFFF。

 

Unicode基本多文种平面的示意图。每个写着数字的格子代表256个码点。

 

状态

现版本为修订7.0.0版,2014年6月16日出版。已分配编码区段为:

 

编码范围              中文名称              英语名称

0000-001F           C0控制符            C0 Controls

0020-007F           基本拉丁文           Basic Latin

0080-009F           C1控制符            C1 Controls

00A0-00FF          拉丁文补充-1       Latin-1 Supplement

0100-017F           拉丁文扩展-A       Latin Extended-A

0180-024F           拉丁文扩展-B       Latin Extended-B

0250-02AF          国际音标扩展       IPA Extensions

02B0-02FF          占位修饰符号       Spacing Modifier Letters

0300-036F           结合附加符号       Combining Diacritics Marks

0370-03FF          希腊字母及科普特字母       Greek and Coptic

0400-04FF          西里尔字母           Cyrillic

0500-052F           西里尔字母补充    Cyrillic Supplement

0530-058F           亚美尼亚字母       Armenian

0590-05FF          希伯来文              Hebrew

0600-06FF          阿拉伯文              Arabic

0700-074F           叙利亚文              Syriac

0750-077F           阿拉伯文补充       Arabic Supplement

0780-07BF          它拿字母              Thaana

07C0-07FF          西非书面语言       N'Ko

0800-083F           撒玛利亚字母       Samaritan

0840-085F           曼达语    Mandaic

0860-08FF          阿拉伯文扩展-A   Arabic Extended-A

0900-097F           天城文    Devanagari

0980-09FF          孟加拉文              Bengali

0A00-0A7F          果鲁穆奇字母       Gurmukhi

0A80-0AFF         古吉拉特文           Gujarati

0B00-0B7F          奥里亚文              Oriya

0B80-0BFF         泰米尔文              Tamil

0C00-0C7F          泰卢固文              Telugu

0C80-0CFF         卡纳达文              Kannada

0D00-0D7F         马拉雅拉姆文       Malayalam

0D80-0DFF         僧伽罗文              Sinhala

0E00-0E7F          泰文       Thai

0E80-0EFF         老挝文    Lao

0F00-0FFF          藏文       Tibetan

1000-109F           缅甸文    Myanmar

10A0-10FF          格鲁吉亚字母       Georgian

1100-11FF           谚文字母              Hangul Jamo

1200-137F           吉兹字母              Ethiopic

1380-139F           吉兹字母补充       Ethiopic Supplement

13A0-13FF          切罗基字母           Cherokee

1400-167F           统一加拿大原住民音节文字              Unified Canadian Aboriginal Syllabics

1680-169F           欧甘字母              Ogham

16A0-16FF          卢恩字母              Runic

1700-171F           他加禄字母           Tagalog

1720-173F           哈努诺文              Hanunóo

1740-175F           布什德文              Buhid

1760-177F           塔格巴努亚文       Tagbanwa

1780-17FF          高棉文    Khmer

1800-18AF          蒙古文    Mongolian

18B0-18FF          加拿大原住民音节文字扩展              Unified Canadian Aboriginal Syllabics Extended

1900-194F           林布文    Limbu

1950-197F           德宏傣文              Tai Le

1980-19DF          新傣仂文              New Tai Lue

19E0-19FF          高棉文符号           Khmer Symbols

1A00-1A1F          布吉文    Buginese

1A20-1AAF         老傣文    Tai Tham

1AB0-1AFF         组合变音标记扩展              Combining Diacritical Marks Extended

1B00-1B7F          巴厘字母              Balinese

1B80-1BBF         巽他字母              Sundanese

1BC0-1BFF         巴塔克文              Batak

1C00-1C4F          雷布查字母           Lepcha

1C50-1C7F          桑塔利文              Ol Chiki

1C80-1CBF         待定      

1CC0-1CCF         巽他字母补充       Sudanese Supplement

1CD0-1CFF         梵文吠陀扩展       Vedic Extensions

1D00-1D7F         音标扩展              Phonetic Extensions

1D80-1DBF         音标扩展补充       Phonetic Extensions Supplement

1DC0-1DFF        结合附加符号补充              Combining Diacritics Marks Supplement

1E00-1EFF         拉丁文扩展附加    Latin Extended Additional

1F00-1FFF          希腊语扩展           Greek Extended

2000-206F           常用标点              General Punctuation

2070-209F           上标及下标           Superscripts and Subscripts

20A0-20CF          货币符号              Currency Symbols

20D0-20FF          组合用记号           Combining Diacritics Marks for Symbols

2100-214F           字母式符号           Letterlike Symbols

2150-218F           数字形式              Number Forms

2190-21FF          箭头       Arrows

2200-22FF          数学运算符           Mathematical Operators

2300-23FF          杂项工业符号       Miscellaneous Technical

2400-243F           控制图片              Control Pictures

2440-245F           光学识别符           Optical Character Recognition

2460-24FF          封闭式字母和数字              Enclosed Alphanumerics

2500-257F           制表符    Box Drawing

2580-259F           方块元素              Block Elements

25A0-25FF          几何图形              Geometric Shapes

2600-26FF          杂项符号              Miscellaneous Symbols

2700-27BF          标志装饰符号       Dingbats

27C0-27EF          杂项数学符号-A   Miscellaneous Mathematical Symbols-A

27F0-27FF          追加箭头-A          Supplemental Arrows-A

2800-28FF          盲文点字模型       Braille Patterns

2900-297F           追加箭头-B          Supplemental Arrows-B

2980-29FF          杂项数学符号-B   Miscellaneous Mathematical Symbols-B

2A00-2AFF         追加数学运算符    Supplemental Mathematical Operator

2B00-2BFF         杂项符号和箭头    Miscellaneous Symbols and Arrows

2C00-2C5F          格拉哥里字母       Glagolitic

2C60-2C7F          拉丁文扩展-C       Latin Extended-C

2C80-2CFF         科普特字母           Coptic

2D00-2D2F         格鲁吉亚字母补充              Georgian Supplement

2D30-2D7F         提非纳文              Tifinagh

2D80-2DDF        吉兹字母扩展       Ethiopic Extended

2DE0-2DFF        西里尔字母扩展-A              Cyrillic Extended-A

2E00-2E7F          追加标点              Supplemental Punctuation

2E80-2EFF         中日韩汉字部首补充           CJK Radicals Supplement

2F00-2FDF         康熙部首              Kangxi Radicals

2FF0-2FFF          表意符号说明       Ideographic Description Characters

3000-303F           中日韩符号和标点              CJK Symbols and Punctuation

3040-309F           日文平假名           Hiragana

30A0-30FF          日文片假名           Katakana

3100-312F           注音字母              Bopomofo

3130-318F           谚文兼容字母       Hangul Compatibility Jamo

3190-319F           汉文注释标志       Kanbun

31A0-31BF          注音字母扩展       Bopomofo Extended

31C0-31EF          中日韩笔画           CJK Strokes

31F0-31FF          日文片假名拼音扩展           Katakana Phonetic Extensions

3200-32FF          封闭式中日韩字母和月份    Enclosed CJK Letters and Months

3300-33FF          中日韩兼容字符    CJK Compatibility

3400-4DBF         中日韩统一表意文字扩展A              CJK Unified Ideographs Extension A

4DC0-4DFF        易经六十四卦符号              Yijing Hexagrams Symbols

4E00-9FFF          中日韩统一表意文字           CJK Unified Ideographs

A000-A48F          彝文音节              Yi Syllables

A490-A4CF         彝文字根              Yi Radicals

A4D0-A4FF         老傈僳文              Lisu

A500-A63F          瓦伊语    Vai

A640-A69F          西里尔字母扩展-B              Cyrillic Extended-B

A6A0-A6FF         巴姆穆语              Bamum

A700-A71F          修饰用声调符号    Modifier Tone Letters

A720-A7FF         拉丁文扩展-D       Latin Extended-D

A800-A82F          锡尔赫特文           Syloti Nagri

A830-A83F          通用印度数字格式              Common Indic Number Forms

A840-A87F          八思巴文字           Phags-pa

A880-A8DF         索拉什特拉文       Saurashtra

A8E0-A8FF         天城文扩展           Devanagari Extended

A900-A92F          克耶里字母           Kayah Li

A930-A95F          勒姜字母              Rejang

A960-A97F          谚文扩展-A          Hangul Jamo Extended-A

A980-A9DF         爪哇字母              Javanese

A9E0-A9FF         缅甸文扩展-B       Myanmar Extended-B

AA00-AA5F         占语字母              Cham

AA60-AA7F         缅甸文扩展-A       Myanmar Extended-A

AA80-AADF        越南傣文              Tai Viet

AAE0-AAFF        曼尼普尔文扩展    Meetei Mayek Extensions

AB00-AB2F         吉兹字母扩展-A   Ethiopic Extended-A

AB30-AB6F         拉丁文扩展-E       Latin Extended-E

ABC0-ABFF        曼尼普尔文           Meetei Mayek

AC00-D7AF        谚文音节              Hangul Syllables

D7B0-D7FF        谚文字母扩展-B   Hangul Jamo Extended-B

D800-DBFF        UTF-16的高半区 High-half zone of UTF-16

DC00-DFFF        UTF-16的低半区 Low-half zone of UTF-16

E000-F8FF          专用区    Private Use Area

F900-FAFF          中日韩兼容表意文字           CJK Compatibility Ideographs

FB00-FB4F         字母表达形式(拉丁字母连字、亚美尼亚字母连字、希伯来文表现形式)              Alphabetic Presentation Forms

FB50-FDFF         阿拉伯字母表达形式-A       Arabic Presentation Forms A

FE00-FE0F         异体字选择符       Variation Selector

FE10-FE1F         竖排形式              Vertical Forms

FE20-FE2F         组合用半符号       Combining Half Marks

FE30-FE4F         中日韩兼容形式    CJK Compatibility Forms

FE50-FE6F         小写变体形式       Small Form Variants

FE70-FEFF         阿拉伯文表达形式-B          Arabic Presentation Forms B

FF00-FFEF         半角及全角字符    Halfwidth and Fullwidth Forms

FFF0-FFFF         特殊       Specials

 

第一辅助平面

第一辅助平面又称多文种补充平面(Supplementary Multilingual Plane,缩写SMP,或简称Plane 1),摆放拼音文字(主要为现时已不再使用的古老文字)、手写文字和音符等符号。用于学者的专业论文中使用这些古老或过时的语言书写符号。范围在U+10000~U+1FFFD。计划分配如下。

 

编码范围              中文名称              英语名称

10000-1007F       线形文字B音节文字          Linear B Syllabary

10080-100FF      线形文字B表意文字          Linear B Ideograms

10100-1013F       爱琴海数字           Aegean Numbers

10140-1018F       古希腊数字           Ancient Greek Numbers

10190-101CF      古代记数系统       Ancient Symbols

101D0-101FF      费斯托斯圆盘       Phaistos Disc

10280-1029F       吕基亚字母           Lycian

102A0-102DF     卡利亚字母           Carian

102E0-102FF      科普特闰余数字    Coptic Epact Numbers

10300-1032F       古意大利字母       Old Italic

10330-1034F       哥特字母              Gothic

10350-1037F       古彼尔姆字母       Old Permic

10380-1039F       乌加里特字母       Ugaritic

103A0-103DF     古波斯文              Old Persian

10400-1044F       德赛莱特字母       Deseret

10450-1047F       萧伯纳字母           Shavian

10480-104AF      奥斯曼亚字母       Osmanya

10500-1052F       艾尔巴桑字母       Elbasan

10530-1056F       高加索阿尔巴尼亚文           Caucasian Albanian

10600-1077F       线形文字A           Linear A

10800-1083F       塞浦路斯音节文字              Cypriot Syllabary

10840-1085F       帝国亚兰文字       Imperial Aramaic

10860-1087F       帕尔迈拉字母       Palmyrene

10880-108AF      纳巴泰文              Nabataean

10900-1091F       腓尼基字母           Phoenician

10920-1093F       吕底亚字母           Lydian

10980-1099F       麦罗埃文              Meroitic Hieroglyphs

109A0-109FF      麦罗埃文草书       Meroitic Cursive

10A00-10A5F      佉卢文    Kharoshthi

10A60-10A7F      古南阿拉伯字母    Old South Arabian

10A80-10A9F      古北阿拉伯字母    Old North Arabian

10AC0-10AFF     摩尼教文              Manichaean

10B00-10B3F      阿维斯陀文字       Avestan

10B40-10B5F      碑刻帕提亚文       Inscriptional Parthian

10B60-10B7F      碑刻巴列维文       Inscriptional Pahlavi

10B80-10BAF     诗篇巴列维文       Psalter Pahlavi

10C00-10C4F      古突厥文              Old Turkic

10E60-10E7F      卢米文数字           Rumi Numeral Symbols

11000-1107F       婆罗米文字           Brahmi

11080-110CF       凯提文    Kaithi

110D0-110FF      索拉桑朋文           Sora Sompeng

11100-1114F        查克马文              Chakma

11150-1117F        马哈佳尼文           Mahajani

11180-111DF       夏拉达文              Sharada

111E0-111FF       古僧伽罗文数字    Sinhala Archaic Numbers

11200-1124F       可吉文    Khojki

112B0-112FF      库达瓦迪文           Khudawadi

11300-1137F       帕拉瓦文              Grantha

11480-114DF                    Tirhuta

11580-115FF       悉昙文字              Siddham

11600-1165F       莫迪文    Modi

11680-116CF       塔克里字母           Takri

118A0-118FF      瓦兰齐地文           Warang Citi

11AC0-11AFF                   Pau Cin Hau

12000-123FF      楔形文字              Cuneiform

12400-1247F       楔形文字数字和标点符号    Cuneiform Numbers and Punctuation

13000-1342F       埃及圣书体           Egyptian Hieroglyphs

16800-16A3F      巴姆穆文字补充    Bamum Supplement

16A40-16A6F                    Mro

16AD0-16AFF     巴萨哇文字           Bassa Vah

16B00-16B8F      Pahawh苗文       Pahawh Hmong

16F00-16F9F      柏格理苗文           Miao

1B000-1B0FF     日文假名补充       Kana Supplement

1BC00-1BC9F     杜普雷速记           Duployan

1BCA0-1BCAF    速记格式控制符    Shorthand Format Controls

1D000-1D0FF     拜占庭音乐符号    Byzantine Musical Symbols

1D100-1D1FF     音乐符号              Musical Symbols

1D200-1D24F     古希腊音乐记号    Ancient Greek Musical Notation

1D300-1D35F     太玄经符号           Tai Xuan Jing Symbols

1D360-1D37F     算筹       Counting Rod Numerals

1D400-1D7FF     字母和数字符号    Mathematical Alphanumeric Symbols

1E800-1E8DF                   Mende Kikakui

1EE00-1EEFF    阿拉伯字母数字符号           Arabic Mathematical Alphanumeric Symbols

1F000-1F02F      麻将牌    Mahjong Tiles

1F030-1F09F      多米诺骨牌           Domino Tiles

1F0A0-1F0FF     扑克牌    Playing Cards

1F100-1F1FF      封闭式字母数字补充           Enclosed Alphanumeric Supplement

1F200-1F2FF      封闭式表意文字补充           Enclosed Ideographic Supplement

1F300-1F5FF      杂项符号和象形文字           Miscellaneous Symbols And Pictographs

1F600-1F64F      表情符号              Emotions

1F650-1F67F      装饰符号              Ornamental Dingbats

1F680-1F6FF      交通和地图符号    Transport And Map Symbols

1F700-1F77F      炼金术符号           Alchemical Symbols

1F780-1F7FF      几何图形扩展       Geometric Shapes Extended

1F800-1F8FF      追加箭头-C          Supplemental Arrows-C

以下是它们的编码表。

 

10000-10FFF - 12000-12FFF - 1D000-1DFFF - 1F000-1FFFF

第二辅助平面

第二辅助平面又称为表意文字补充平面(Supplementary Ideographic Plane,缩写SIP,或简称Plane 2),整个范围在U+20000~U+2FFFD。整个平面配置的都是一些罕用的汉字或地区的方言用字,如粤语用字及越南语的字喃。现时摆放了“中日韩统一表意文字扩展B区”(4万3253个汉字)、“中日韩统一表意文字扩展C区”(4149个汉字)、“中日韩统一表意文字扩展D区”(222个汉字)以及中日韩兼容表意文字增补(CJK Compatibility Ideographs Supplement)。预计“中日韩统一表意文字扩展E区”也会使用此平面。

 

已分配和计划分配的编码区段为:

 

U+20000-U+2A6DF:中日韩统一表意文字扩展B区

U+2A700-U+2B73F:中日韩统一表意文字扩展C区

U+2B740-U+2B81F:中日韩统一表意文字扩展D区

U+2B820-U+2F7FF:中日韩统一表意文字扩展E区(还在草拟阶段)

U+2F800-U+2FA1F:中日韩兼容表意文字增补

以下是其编码表。

 

20000-20FFF - 21000-21FFF - 22000-22FFF - 23000-23FFF - 24000-24FFF - 25000-25FFF - 26000-26FFF - 27000-27FFF - 28000-28FFF - 29000-29FFF - 2A000-2AFFF - 2F000-2FFFF

 

第三至十三辅助平面

第三辅助平面尚未使用,但打算用来摆放甲骨文、金文、小篆、中国战国时期文字等。 计划分配的编码区段为:

 

U+30000-U+317FF:甲骨文

U+32000-U+32FFF:金文

U+34000-U+368FF:小篆

第四至第十三辅助平面并未计划使用。

 

第十四辅助平面

第十四辅助平面又称特别用途补充平面(Supplementary Special-purpose Plane,简称SSP),摆放“语言编码标签”和“字形变换选取器”,它们都是控制字符。范围在U+E0000~U+E01FF。

 

编码范围              中文名称              英语名称

E0000-E007F      标签       Tags

E0100-E01EF     选择器变化补充    Variation Selectors Supplement

编码表详见E0000-E0FFF。

 

第十五至十六辅助平面

第十五至十六辅助平面都是私人使用区。它们的范围是U+F0000~U+FFFFD及U+100000~U+10FFFD.

 

 

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

输入方法

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

基于X Window System的Linux系统, 如Ubuntu的Gnome Terminal, 首先按下Ctrl+Shift+U,然后输入10进制Unicode数,如interpunct间隔符输入00b7 ,最后按空格键;

Microsoft Windows系统, 按下Alt+0183表示interpunct间隔符。

在SGML、HTML、XML的文本中,使用字符值引用或字符实体引用表示一个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委员会在关于中文和日语的常用问题列表里回答了此问题。主要问题是汉字中各个组件的相对大小不是固定的。比如“员”字,由“口”和“贝”组成,而“呗”也是由“口”和“贝”组成,但其相对位置和大小并不一致。还有一些其他原因,比如字符比较和排序时需要先对编码流进行分析后才能得到各个字符,增加处理程序复杂性等。

另一个问题是:由于中国历代字书有收录讹字(即错别字)的习惯,因此Unicode编码中收入大量讹字,占据大量空间,引发批评。电脑文件中若使用错讹字,在用正确字做检索时,用错讹字写出的同一个词语无法检出。

 

通用字符集

通用字符集(Universal Character Set,UCS)是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义的标准字符集。

通用字符集又称Universal Multiple-Octet Coded Character Set,中国大陆译为通用多八位编码字符集,台湾译为广用多八比特编码字元集。

概要

通用字符集包括了其他所有字符集。它保证了与其他字符集的双向兼容,即,如果你将任何文本字符串翻译到UCS格式,然后再翻译回原编码,你不会丢失任何信息。

UCS包含了已知语言的所有字符。除了拉丁语、希腊语、斯拉夫语、希伯来语、阿拉伯语、亚美尼亚语、格鲁吉亚语,还包括中文、日文、韩文这样的方块文字,UCS还包括大量的图形、印刷、数学、科学符号。

ISO/IEC 10646定义了一个31位的字符集。

ISO/IEC 10646-1标准第一次发表于1993年,现在的公开版本是ISO/IEC 10646-1:2000。ISO/IEC 10646-2在2001年发表。

UCS不仅给每个字符分配一个代码,而且赋予了一个正式的名字。表示一个UCS或Unicode值的十六进制数通常在前面加上“U+”,例如“U+0041”代表字符“A”。

 

实现级别

并不是所有的系统都需要支持像组合字符这样的的先进机制。因此ISO 10646指定了如下三种实现级别:

级别1:不支持组合字符和谚文字母字符。

级别2:类似于级别1,但在某些文字中,允许一列固定的组合字符,因为如果没有最起码的几个组合字符,UCS就不能完整地表达这些语言。

级别3:支持所有的通用字符集字符,如,可以在任意一个字符上加上一个箭头或一个鼻音化符号.

 

Unicode和ISO 10646的关系

历史上存在两个独立的尝试创立单一字符集的组织,即

国际标准化组织(ISO)于1984年创建的ISO/IEC

JTC1/SC2/WG2,其含义是International Organization for Standardization / International Electrotechnical Commission, Joint Technical Committee #1 [Information Technology], Subcommittee #2 [Coded Character Sets], Working Group #2 [Multi-octet codes]). ISO 10646表示这是ISO 646的扩展。

 

由Xerox、Apple等软件制造商于1988年组成的统一码联盟。前者开发的ISO/IEC 10646项目,后者开发的统一码项目。因此最初制定了不同的标准。

1991年前后,两个项目的参与者都认识到,世界不需要两个不兼容的字符集。于是,它们开始合并双方的工作成果,并为创立一个单一编码表而协同工作。1991年,不包含CJK统一汉字集的Unicode 1.0发布。随后,CJK统一汉字集的制定于1993年完成,发布了ISO 10646-1:1993,即Unicode 1.1。

 

从Unicode 2.0开始,Unicode采用了与ISO 10646-1相同的字库和字码;ISO也承诺,ISO 10646将不会替超出U+10FFFF的UCS-4编码赋值,以使得两者保持一致。两个项目仍都独立存在,并独立地公布各自的标准。但统一码联盟和ISO/IEC JTC1/SC2都同意保持两者标准的码表兼容,并紧密地共同调整任何未来的扩展。在发布的时候,Unicode一般都会采用有关字码最常见的字体,但ISO 10646一般都尽可能采用Century字体。

 

Unicode和ISO 10646的异同

统一码联盟公布的Unicode标准包含了ISO/IEC 10646-1实现级别3的基本多文种平面。在两个标准里,所有的字符都在相同的位置并且有相同的名字。

 

ISO/IEC 10646标准,就像ISO/IEC 8859标准一样,只不过是一个简单的字符集表。它定义了一些编码的别名,指定了一些与标准有关的术语,并包括了规范说明,指定了怎样使用UCS连接其他ISO标准的实现,比如ISO/IEC 6429和ISO/IEC 2022。还有一些与ISO紧密相关的,比如ISO/IEC 14651是关于UCS字符串排序的。

 

Unicode标准,额外定义了许多与字符有关的语义符号学。Unicode详细说明了绘制某些语言(如阿拉伯语)表达形式的算法,处理双向文字(比如拉丁文和希伯来文的混合文字)的算法,排序与字符串比较所需的算法,等等。

 

由于Unicode这一名字比较好记,因而它使用更为广泛。不过一般认为,用于打印ISO/IEC 10646-1标准的字体在某些方面的质量,要高于Unicode 2.0。

 

两者部分样例字形有显著的区别。ISO/IEC 10646-1标准同样使用四种不同的风格变体来显示表意文字如中文、日文、韩文(即CJK),但Unicode 2.0的表里只有中文的变体。甚至存在“Unicode对日本用户来说不可接受”的不实传说。

 

常见误解

ISO 10646是字形标准

实际上,ISO/IEC 10646处理的是编码标准,但因为一些数据的混乱,而使人产生误会。比如一个常见的例子是:香港有研究人员以“ISO10646HK.NET”为网址,公布一些字形制作和拼音厘定的文件。有些人便因此误以为ISO/IEC 10646是字形标准。

 

其实,在汉字文化圈中,各地都有其字形标准,例如香港的标准是《常用字字形表》。而ISO/IEC 10646则是作为一套编码标准,而不是去处理各地标准的细微差异或厘定标准字形。

 

ISO 10646比Unicode更支持某地编码

在Unicode和ISO/IEC 10646两个标准中,虽然两者部分样例字形有显著的区别,所有的字符都在相同的位置并且有相同的名字。ISO/IEC 10646-1标准使用四种不同的风格来显示中(繁、简)、日、韩文字,但Unicode的表中,只用简体中文风格来显示,像“Unicode对日本用户来说不可接受”的误解,便由此产生。

 

其实,上文已说明,ISO/IEC 10646或Unicode都只是编码标准,并不处理字形风格标准之问题。字形的风格可以通过改变显示字体来解决。

 

字符编码--UTF-7

转载于:https://my.oschina.net/dubenju/blog/823234

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值