Unicode编码表

历史问题

英语用 128 个字符来编码完全是足够的,但是用来表示其他语言,128 个字符是远远不够的。于是,一些欧洲的国家就决定,将 ASCII 码中闲置的最高位利用起来,这样一来就能表示 256 个字符。但是,这里又有了一个问题,那就是不同的国家的字符集可能不同,就算它们都能用 256 个字符表示全,但是同一个码点(也就是 8 位二进制数)表示的字符可能可能不同。例如,144 在阿拉伯人的 ASCII 码中是 گ,而在俄罗斯的 ASCII 码中是 ђ。

因此,ASCII 码的问题在于尽管所有人都在 0 - 127 号字符上达成了一致,但对于 128 - 255 号字符上却有很多种不同的解释。与此同时,亚洲语言有更多的字符需要被存储,一个字节已经不够用了。于是,人们开始使用两个字节来存储字符。

各种各样的编码方式成了系统开发者的噩梦,因为他们想把软件卖到国外。于是,他们提出了一个“内码表”的概念,可以切换到相应语言的一个内码表,这样才能显示相应语言的字母。在这种情况下,如果使用多语种,那么就需要频繁的在内码表内进行切换。

Unicode

最终,美国人意识到他们应该提出一种标准方案来展示世界上所有语言中的所有字符,出于这个目的,Unicode诞生了。

Unicode 当然是一本很厚的字典,记录着世界上所有字符对应的一个数字。具体是怎样的对应关系,又或者说是如何进行划分的,就不是我们考虑的问题了,我们只用知道 Unicode 给所有的字符指定了一个数字用来表示该字符。

对于 Unicode 有一些误解,它仅仅只是一个字符集,规定了符合对应的二进制代码,至于这个二进制代码如何存储则没有任何规定。它的想法很简单,就是为每个字符规定一个用来表示该字符的数字,仅此而已。

Unicode 编码方案

之前提到,Unicode 没有规定字符对应的二进制码如何存储。以汉字“汉”为例,它的 Unicode 码点是 0x6c49,对应的二进制数是 110110001001001,二进制数有 15 位,这也就说明了它至少需要 2 个字节来表示。可以想象,在 Unicode 字典中往后的字符可能就需要 3 个字节或者 4 个字节,甚至更多字节来表示了。

这就导致了一些问题,计算机怎么知道你这个 2 个字节表示的是一个字符,而不是分别表示两个字符呢?这里我们可能会想到,那就取个最大的,假如 Unicode 中最大的字符用 4 字节就可以表示了,那么我们就将所有的字符都用 4 个字节来表示,不够的就往前面补 0。这样确实可以解决编码问题,但是却造成了空间的极大浪费,如果是一个英文文档,那文件大小就大出了 3 倍,这显然是无法接受的。

于是,为了较好的解决 Unicode 的编码问题, UTF-8 和 UTF-16 两种当前比较流行的编码方式诞生了。当然还有一个 UTF-32 的编码方式,也就是上述那种定长编码,字符统一使用 4 个字节,虽然看似方便,但是却不如另外两种编码方式使用广泛。

下面先介绍Unicode编码中的字符:

图例: Unicode 3.1
Unicode 1.0 Unicode 3.2
Unicode 1.1 Unicode 4.0
Unicode 2.0 Unicode 4.1
Unicode 2.1 未使用
Unicode 3.0 不作编码
Unicode 编码表
0000-0FFF 8000-8FFF 10000-10FFF 20000-20FFF 28000-28FFF
1000-1FFF 9000-9FFF   21000-21FFF 29000-29FFF
2000-2FFF A000-AFFF   22000-22FFF 2A000-2AFFF
3000-3FFF B000-BFFF   23000-23FFF  
4000-4FFF C000-CFFF 1D000-1DFFF 24000-24FFF 2F000-2FFFF
5000-5FFF D000-DFFF   25000-25FFF  
6000-6FFF E000-EFFF   26000-26FFF  
7000-7FFF F000-FFFF   27000-27FFF E0000-E0FFF

 

【Unicode 码表】

0000-007F:C0控制符及基本拉丁文 (C0 Control and Basic Latin)
0080-00FF:C1控制符及拉丁文补充-1 (C1 Control and Latin 1 Supplement) 
0100-017F:拉丁文扩展-A (Latin Extended-A) 
0180-024F:拉丁文扩展-B (Latin Extended-B) 
0250-02AF:国际音标扩展 (IPA Extensions) 
02B0-02FF:空白修饰字母 (Spacing Modifiers) 
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-077F:西非書面語言 (N'Ko) 
0800-085F:阿维斯塔语及巴列维语 (Avestan and Pahlavi) 
0860-087F:Mandaic 
0880-08AF:撒马利亚语 (Samaritan) 
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:Cham 
1900-194F:Limbu 
1950-197F:德宏泰语 (Tai Le) 
1980-19DF:新傣仂语 (New Tai Lue) 
19E0-19FF:高棉语记号 (Kmer Symbols) 
1A00-1A1F:Buginese 
1A20-1A5F:Batak 
1A80-1AEF:Lanna 
1B00-1B7F:巴厘语 (Balinese) 
1B80-1BB0:巽他语 (Sundanese) 
1BC0-1BFF:Pahawh Hmong 
1C00-1C4F:雷布查语(Lepcha) 
1C50-1C7F:Ol Chiki 
1C80-1CDF:曼尼普尔语 (Meithei/Manipuri) 
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 Form) 
2190-21FF:箭头 (Arrows) 
2200-22FF:数学运算符 (Mathematical Operator) 
2300-23FF:杂项工业符号 (Miscellaneous Technical) 
2400-243F:控制图片 (Control Pictures) 
2440-245F:光学识别符 (Optical Character Recognition) 
2460-24FF:封闭式字母数字 (Enclosed Alphanumerics) 
2500-257F:制表符 (Box Drawing) 
2580-259F:方块元素 (Block Element) 
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) 
2E00-2E7F:追加标点 (Supplemental Punctuation) 
2E80-2EFF:CJK 部首补充 (CJK Radicals Supplement) 
2F00-2FDF:康熙字典部首 (Kangxi Radicals) 
2FF0-2FFF:表意文字描述符 (Ideographic Description Characters) 
3000-303F:CJK 符号和标点 (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 笔画 (CJK Strokes) 
31F0-31FF:日文片假名语音扩展 (Katakana Phonetic Extensions) 
3200-32FF:封闭式 CJK 文字和月份 (Enclosed CJK Letters and Months) 
3300-33FF:CJK 兼容 (CJK Compatibility) 
3400-4DBF:CJK 统一表意符号扩展 A (CJK Unified Ideographs Extension A) 
4DC0-4DFF:易经六十四卦符号 (Yijing Hexagrams Symbols) 
4E00-9FBF:CJK 统一表意符号 (CJK Unified Ideographs) 
A000-A48F:彝文音节 (Yi Syllables) 
A490-A4CF:彝文字根 (Yi Radicals) 
A500-A61F:Vai 
A660-A6FF:统一加拿大土著语音节补充 (Unified Canadian Aboriginal Syllabics Supplement) 
A700-A71F:声调修饰字母 (Modifier Tone Letters) 
A720-A7FF:拉丁文扩展-D (Latin Extended-D) 
A800-A82F:Syloti Nagri 
A840-A87F:八思巴字 (Phags-pa) 
A880-A8DF:Saurashtra 
A900-A97F:爪哇语 (Javanese) 
A980-A9DF:Chakma 
AA00-AA3F:Varang Kshiti 
AA40-AA6F:Sorang Sompeng 
AA80-AADF:Newari 
AB00-AB5F:越南傣语 (Vi?t Thái) 
AB80-ABA0:Kayah Li 
AC00-D7AF:朝鲜文音节 (Hangul Syllables) 
D800-DBFF:High-half zone of UTF-16 
DC00-DFFF:Low-half zone of UTF-16 
E000-F8FF:自行使用區域 (Private Use Zone) 
F900-FAFF:CJK 兼容象形文字 (CJK Compatibility Ideographs) 
FB00-FB4F:字母表達形式 (Alphabetic Presentation Form) 
FB50-FDFF:阿拉伯表達形式A (Arabic Presentation Form-A) 
FE00-FE0F:变量选择符 (Variation Selector) 
FE10-FE1F:竖排形式 (Vertical Forms) 
FE20-FE2F:组合用半符号 (Combining Half Marks) 
FE30-FE4F:CJK 兼容形式 (CJK Compatibility Forms) 
FE50-FE6F:小型变体形式 (Small Form Variants) 
FE70-FEFF:阿拉伯表達形式B (Arabic Presentation Form-B) 
FF00-FFEF:半型及全型形式 (Halfwidth and Fullwidth Form) 
FFF0-FFFF:特殊 (Specials)

U+ 0 1 2 3 4 5 6 7 8 9 A B C D E F
0000 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
0010 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
0020   ! " # $ % & ' ( ) * + , - . /
0030 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
0040 @ A B C D E F G H I J K L M N O
0050 P Q R S T U V W X Y Z [ \ ] ^ _
0060 ` a b c d e f g h i j k l m n o
0070 p q r s t u v w x y z { | } ~ DEL
0080 PAD HOP BPH NBH IND NEL SSA ESA HTS HTJ VTS PLD PLU RI SS2 SS3
0090 DCS PU1 PU2 STS CCH MW SPA EPA SOS SGCI SCI CSI ST OSC PM APC
00A0 NBSP ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ SHY ® ¯
00B0 ° ± ² ³ ´ µ · ¸ ¹ º » ¼ ½ ¾ ¿
00C0 À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï
00D0 Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß
00E0 à á â ã ä å æ ç è é ê ë ì í î ï
00F0 ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ
U+ 0 1 2 3 4 5 6 7 8 9 A B C D E F
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值