您现在的位置: 365建站网 > 365学习 > unicode编码表/字符对照表

unicode编码表/字符对照表

文章来源:365jz.com     点击数:13458    更新时间:2017-11-30 10:05   参与评论

简单的分类

其中CJK = Chinese-Japanese-Korean  下面列举了一些相关的索引。查看完整索引:
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)


Unicode Table

 

  00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F  
0000                                       Symbols
0020   ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? Number
0040 @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ Alphabet
0060 ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~   
0080  ƒ ˆ Š Œ  Ž   ˜ š œ  ž Ÿ  
00A0   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬   ® ¯ ° ± ² ³ ´ µ · ¸ ¹ º » ¼ ½ ¾ ¿  
00C0 À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß Latin
00E0 à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ  
0100 Ā ā Ă ă Ą ą Ć ć Ĉ ĉ Ċ ċ Č č Ď ď Đ đ Ē ē Ĕ ĕ Ė ė Ę ę Ě ě Ĝ ĝ Ğ ğ  
0120 Ġ ġ Ģ ģ Ĥ ĥ Ħ ħ Ĩ ĩ Ī ī Ĭ ĭ Į į İ ı IJ ij Ĵ ĵ Ķ ķ ĸ Ĺ ĺ Ļ ļ Ľ ľ Ŀ  
0140 ŀ Ł ł Ń ń Ņ ņ Ň ň ʼn Ŋ ŋ Ō ō Ŏ ŏ Ő ő Œ œ Ŕ ŕ Ŗ ŗ Ř ř Ś ś Ŝ ŝ Ş ş  
0160 Š š Ţ ţ Ť ť Ŧ ŧ Ũ ũ Ū ū Ŭ ŭ Ů ů Ű ű Ų ų Ŵ ŵ Ŷ ŷ Ÿ Ź ź Ż ż Ž ž ſ  
0180 ƀ Ɓ Ƃ ƃ Ƅ ƅ Ɔ Ƈ ƈ Ɖ Ɗ Ƌ ƌ ƍ Ǝ Ə Ɛ Ƒ ƒ Ɠ Ɣ ƕ Ɩ Ɨ Ƙ ƙ ƚ ƛ Ɯ Ɲ ƞ Ɵ  
01A0 Ơ ơ Ƣ ƣ Ƥ ƥ Ʀ Ƨ ƨ Ʃ ƪ ƫ Ƭ ƭ Ʈ Ư ư Ʊ Ʋ Ƴ ƴ Ƶ ƶ Ʒ Ƹ ƹ ƺ ƻ Ƽ ƽ ƾ ƿ  
01C0 ǀ ǁ ǂ ǃ DŽ Dž dž LJ Lj lj NJ Nj nj Ǎ ǎ Ǐ ǐ Ǒ ǒ Ǔ ǔ Ǖ ǖ Ǘ ǘ Ǚ ǚ Ǜ ǜ ǝ Ǟ ǟ  
01E0 Ǡ ǡ Ǣ ǣ Ǥ ǥ Ǧ ǧ Ǩ ǩ Ǫ ǫ Ǭ ǭ Ǯ ǯ ǰ DZ Dz dz Ǵ ǵ Ƕ Ƿ Ǹ ǹ Ǻ ǻ Ǽ ǽ Ǿ ǿ  
0200 Ȁ ȁ Ȃ ȃ Ȅ ȅ Ȇ ȇ Ȉ ȉ Ȋ ȋ Ȍ ȍ Ȏ ȏ Ȑ ȑ Ȓ ȓ Ȕ ȕ Ȗ ȗ Ș ș Ț ț Ȝ ȝ Ȟ ȟ  
0220 Ƞ ȡ Ȣ ȣ Ȥ ȥ Ȧ ȧ Ȩ ȩ Ȫ ȫ Ȭ ȭ Ȯ ȯ Ȱ ȱ Ȳ ȳ ȴ ȵ ȶ ȷ ȸ ȹ Ⱥ Ȼ ȼ Ƚ Ⱦ ȿ  
0240 ɀ Ɂ ɂ Ƀ Ʉ Ʌ Ɇ ɇ Ɉ ɉ Ɋ ɋ Ɍ ɍ Ɏ ɏ ɐ ɑ ɒ ɓ ɔ ɕ ɖ ɗ ɘ ə ɚ ɛ ɜ ɝ ɞ ɟ  
0260 ɠ ɡ ɢ ɣ ɤ ɥ ɦ ɧ ɨ ɩ ɪ ɫ ɬ ɭ ɮ ɯ ɰ ɱ ɲ ɳ ɴ ɵ ɶ ɷ ɸ ɹ ɺ ɻ ɼ ɽ ɾ ɿ  
0280 ʀ ʁ ʂ ʃ ʄ ʅ ʆ ʇ ʈ ʉ ʊ ʋ ʌ ʍ ʎ ʏ ʐ ʑ ʒ ʓ ʔ ʕ ʖ ʗ ʘ ʙ ʚ ʛ ʜ ʝ ʞ ʟ  
02A0 ʠ ʡ ʢ ʣ ʤ ʥ ʦ ʧ ʨ ʩ ʪ ʫ ʬ ʭ ʮ ʯ ʰ ʱ ʲ ʳ ʴ ʵ ʶ ʷ ʸ ʹ ʺ ʻ ʼ ʽ ʾ ʿ  
02C0 ˀ ˁ ˂ ˃ ˄ ˅ ˆ ˇ ˈ ˉ ˊ ˋ ˌ ˍ ˎ ˏ ː ˑ ˒ ˓ ˔ ˕ ˖ ˗ ˘ ˙ ˚ ˛ ˜ ˝ ˞ ˟  
02E0 ˠ ˡ ˢ ˣ ˤ ˥ ˦ ˧ ˨ ˩ ˪ ˫ ˬ ˭ ˮ ˯ ˰ ˱ ˲ ˳ ˴ ˵ ˶ ˷ ˸ ˹ ˺ ˻ ˼ ˽ ˾ ˿  
0300 ̀ ́ ̂ ̃ ̄ ̅ ̆ ̇ ̈ ̉ ̊ ̋ ̌ ̍ ̎ ̏ ̐ ̑ ̒ ̓ ̔ ̕ ̖ ̗ ̘ ̙ ̚ ̛ ̜ ̝ ̞ ̟  
0320 ̠ ̡ ̢ ̣ ̤ ̥ ̦ ̧ ̨ ̩ ̪ ̫ ̬ ̭ ̮ ̯ ̰ ̱ ̲ ̳ ̴ ̵ ̶ ̷ ̸ ̹ ̺ ̻ ̼ ̽ ̾ ̿  
0340 ̀ ́ ͂ ̓ ̈́ ͅ ͆ ͇ ͈ ͉ ͊ ͋ ͌ ͍ ͎ ͏ ͐ ͑ ͒ ͓ ͔ ͕ ͖ ͗ ͘ ͙ ͚ ͛ ͜ ͝ ͞ ͟  
0360 ͠ ͡ ͢ ͣ ͤ ͥ ͦ ͧ ͨ ͩ ͪ ͫ ͬ ͭ ͮ ͯ Ͱ ͱ Ͳ ͳ ʹ ͵ Ͷ ͷ ͸ ͹ ͺ ͻ ͼ ͽ ; Ϳ  
0380 ΀ ΁ ΂ ΃ ΄ ΅ Ά · Έ Ή Ί ΋ Ό ΍ Ύ Ώ ΐ Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Greek
03A0 Π Ρ ΢ Σ Τ Υ Φ Χ Ψ Ω Ϊ Ϋ ά έ ή ί ΰ α β γ δ ε ζ η θ ι κ λ μ ν ξ ο  
03C0 π ρ ς σ τ υ φ χ ψ ω ϊ ϋ ό ύ ώ Ϗ ϐ ϑ ϒ ϓ ϔ ϕ ϖ ϗ Ϙ ϙ Ϛ ϛ Ϝ ϝ Ϟ ϟ  
03E0 Ϡ ϡ Ϣ ϣ Ϥ ϥ Ϧ ϧ Ϩ ϩ Ϫ ϫ Ϭ ϭ Ϯ ϯ ϰ ϱ ϲ ϳ ϴ ϵ ϶ Ϸ ϸ Ϲ Ϻ ϻ ϼ Ͻ Ͼ Ͽ  


注意:下面这两段是代理区。即第1——16平面的间接表示,四个字节的汉字就在这里表示
D800-DBFF:High-half zone of UTF-16     
DC00-DFFF:Low-half zone of UTF-16 

iPhone emoji问题牵出的Unicode代理区的思考

       在程序员和产品讨论emoji字符占用的字节数的时候,有人说2个、有人说4个、还有开发说iPhone的表情是iOS自定特定的。究竟emoji是几个字符呢?答案是4个,下面详细介绍一下:

        在输入框输入一个emoji——微笑,然后通过UTF-8转化工具,看看它的编码是这样:

        可以看到Unicode编码是 D83D-DE03。utf-8的编码是F09F-9883。常见字符Unicode很少四个字节的,这个不寻常的。通常utf-8是1到3个字节的,也就是说在Unicode编码空间的第0个平面上。可以简单推测:既然emoji的utf-8是4个字节,说明在1,2...16个平面中的某一个 。

        这里有必要说明一下utf-8的编码规则 如图所示:

        我们再看看“微笑”的emoji符号的Unicode:D83D-DE03,已经超过了表格中最大的0X10FFFF了,怎么回事???下面我们根据utf-8的值:F09F-9883.来反推Unicode对应的数值吧,看看究竟是为什么:

得出的结果是0x1-F603,我把这个值叫做UTF-16.这个结果跟Unicode:D83D-DE03的值相差很大,所以,中间肯定经过了一些转换步骤,这个转换就是utf-16的代理!!!

UFT-16

    UTF是"Unicode/UCS Transformation Format"的首字母缩写,即把Unicode字符转换为某种格式之意。上面第二张图片展示的是utf-8和unicode的对应表,这只是一个简单的对应,却非常好用。

    在正常情况下一个Unicode两个字节,在转化uft-8的时候,根据协议,两个两个字节,对应一个uft-8这样完成转化或者称为映射!

    其实在第0个平面中,专门有一个代理区域,不表示任何字符,只用于指向第1到第16个平面中的字符,这段区域是:D800——DFFF.。其中0xD800——0xDBFF是前导代理(lead surrogates).0xDC00——0xDFFF是后尾代理(trail surrogates).

    一个代理对儿(前导,后尾),就表示一个utf-16的字符。就那emoji的微笑来说,前导是代理:D83D;后尾代理是:DE03。根据下图可以得出utf-16的值是:0x1-F603。这就照应上了。

具体的公式是:0x10000 + (前导-0xD800) * 0x400 + (后导-0xDC00) = utf-16编码。

就我们说的例子emoji而言,代入前导和后导,结果是:0x10000+(0xD83D - 0xD800)*0x400 + (0xDE03-0xDC00) = 0x1F603

作为程序员的我们,笔者做一个形象的比喻:这对儿(前导代理,后尾代理)就像一个指针,指向了第1——16平面上的每一个码位。经过计算,不难得出:16个平面 * 每个平面码位65536 = 1,048,576个,前导X后尾代理,可以表示的码位也是1,048,576个(哈!真是一个完美的解决方案)如上图所示。

这样做的好处是:程序根据Unicode的第一个字节来判断:(伪代码)

[objc] view plain copy
if(Unicode第一个字节 >=0xD8 && Unicode <=0xDB){ 
    //这是代理区域,表示第1——16平面的字符。每四个字节表示一个单元 

else{ 
    //这是正常映射区域,表示第0个平面。每两个字节表示一个单元。 
}  


这样的结果是:根据这个协议判断,计算机可以知道两个字节,还是四个自己表示一个字符。

总结

        ● emoji 没什么特别的,也是正常的Unicode编码,只是通过代理区实现
        ● 这里说的utf-8和utf-16,其实本质上是一样的。只是utf-8是一个直接的映射。而utf-16需要根据代理区的(前导代理,后尾代理)来映射。utf-16比utf-8多了一步而已!
        ● 话又说回来:如果不是代理区域的出现,就emoji 微笑的unicode: 0X1-F603来说。计算机甚至不知道这是一个字符,还是两个字符!所以,搞了一个Unicode:D83D-DE03来表示unicode: 0X1-F603,防止计算机解码混淆!

 


如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛


发表评论 (13458人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片
最新评论
------分隔线----------------------------