《字符编码基础知识汇总-2023年个人用心.docx》由会员分享,可在线阅读,更多相关《字符编码基础知识汇总-2023年个人用心.docx(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、ASCH、Unicode和UTF-8之间的关系字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的知识。一、ASCII 码我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为 一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000到11111111。上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码,一直沿用至今。ASCII码一共规定了 128个
2、字符的编码,比如空格SPACE是32 (二进制00100000),大写的字母A是65 (二进制01000001)。这128个符号(包括 32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的一位统一规定为0。二、非ASCII编码英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。比如,在法语中,字母上方有注音符号,它就无法用ASCII码表示。于是,一些 欧洲国家就决定,利用字节中闲置的最高位编入新的符号。比如,法语中的e的编码为130 (二进制10000010)。这样一来,这些欧洲国家使用的编码体 系,可以表示最多256个符号。但是,这里又出现了新的问题。不
3、同的国家有不同的字母,因此,哪怕它们都使用256个符号的编码方式,代表的字母却不一样。比如,130在法语编码中代表 了 6 ,在希伯来语编码中却代表了字母GimelQ),在俄语编码中又会代表另一个符号。但是不管怎样,所有这些编码方式中,0-127表示的符号是一样的, 不一样的只是128255的这一段。至于亚洲国家的文字,使用的符号就更多了,汉字就多达10万左右。一个字节只能表示256种符号,肯定是不够的,就必须使用多个字节表达一个符号。比如, 简体中文常见的编码方式是GB2312,使用两个字节表示一个汉字,所以理论上最多可以表示256 x 256 = 65536个符号。十进制DEC八进制OCT
4、十六进制HEX二进制BIN符号SymbolHTML 实体编码中文解释Description160201000010000DLE;数据链路转义170211100010001DC1;设备控制1180221200010010DC2;设备控制2190231300010011DC3;设备控制3200241400010100DC4;设备控制4210251500010101NAK;拒绝接收220261600010110SYN;同步空闲230271700010111ETB;传输块结束240301800011000CAN;
5、取消250311900011001EM;介质中断260321A00011010SUB;替换27033IB00011011ESC;换码符十进制DEC八进制OCT十六进制HEX二进制BIN符号SymbolHTML 实体编码中文解释Description280341C00011100FS;文件分隔符29035ID00011101GS;组分隔符30036IE00011110RS;记录分离符31037IF00011111US;单元分隔符ASCII打印字符(字符编码:32-127)32126(共95个)是字符:32是空格,其中4857为
6、0到9十个阿拉伯数字,6590为26个大写英文字母,97122号为26个小写英文字母,其余为一些标点符号、运算符号等。第127个字符表示的是键盘上的删除命令。十进制DEC八进制OCT十六进制HEX二进制BIN符号SymbolHTML 实体编码中文解释Description320402000100000 ;空格3304121001000011!;感叹号34042220010001011";双引号十进制DEC八进制OCT十六进制HEX二进制BIN符号SymbolHTML 实体编码中文解释Description350432300100011##;井号360442400
7、100100$$;美元符370452500100101%%;百分号380462600100110&;与390472700100111f';单引号400502800101000((;左括号410512900101001));右括号420522A00101010**;星号430532B00101011++;加号440542C00101100,;逗号450552D00101101-;连字号或减号460562E00101110.;句点或小数点十进制DEC八进制OCT十六进制HEX二进制BIN符号SymbolHTML
8、 实体编码中文解释Description470572F00101111//;斜杠48060300011000000;049061310011000111;150062320011001022;251063330011001133;352064340011010044;453065350011010155;554066360011011066;655067370011011177;756070380011100088;857071390011100199;9580723A00111010 *:;冒号十
9、进制DEC八进制OCT十六进制HEX二进制BIN符号SymbolHTML 实体编码中文解释Description590733B00111011;;分号600743C00111100>;大于630773F001111119 .?;问号641004001000000@;电子邮件符号651014101000001AA;大写字母A661024201000010BB;大写字母B671034301000011CC;大写字母C681044401000100DD;大写字母D691054501000101EE;大写字母E7010646010
10、00110FF;大写字母F十进制DEC八进制OCT十六进制HEX二进制BIN符号SymbolHTML 实体编码中文解释Description711074701000111GG;大写字母G721104801001000HH;大写字母H731114901001001II;大写字母I741124A01001010JJ;大写字母J751134B01001011KK;大写字母K761144C01001100LL;大写字母L771154D01001101MM;大写字母M781164E01001110NN;大写字母N791174F010
11、011110O;大写字母0801205001010000PP;大写字母P811215101010001QQ;大写字母Q821225201010010RR;大写字母R十进制DEC八进制OCT十六进制HEX二进制BIN符号SymbolHTML 实体编码中文解释Description831235301010011SS;大写字母s841245401010100TT;大写字母T851255501010101UU;大写字母U861265601010110VV;大写字母V871275701010111wW大写字母W88130580101
12、1000XX;大写字母X891315901011001YY;大写字母Y901325A01011010ZZ;大写字母Z911335B01011011[;左中括号921345C01011100\;反斜杠931355D01011101];右中括号941365E01011110zv^;音调符号十进制DEC八进制OCT十六进制HEX二进制BIN符号SymbolHTML 实体编码中文解释Description951375F01011111_;下划线961406001100000`;重音符971416101100001aa;小写
13、字母a981426201100010bb;小写字母b991436301100011cc;小写字母c1001446401100100dd;小写字母d1011456501100101e小写字母e1021466601100110ff;小写字母f1031476701100111gg;小写字母g1041506801101000hh;小写字母h1051516901101001*1i;小写字母i1061526A01101010Jj;小写字母j十进制DEC八进制OCT十六进制HEX二进制BIN符号SymbolHTML 实体编码文解释Descrip
14、tion1071536B01101011kk;小写字母k1081546C011011001l;小写字母11091556D01101101mm;小写字母m1101566E01101110n小写字母n1111576F011011110小写字母。1121607001110000Pp;小写字母p1131617101110001qq;小写字母q1141627201110010r小写字母r1151637301110011s小写字母s1161647401110100tt;小写字母t1171657501110101uu;小写字母u118166760111
15、0110Vv;小写字母v十进制DEC八进制OCT十六进制HEX二进制BIN符号SymbolHTML 实体编码中文解释Description1191677701110111Ww;小写字母w1201707801111000Xx;小写字母X1211717901111001yy;小写字母y1221727A01111010zz;小写字母Z1231737B01111011{;左大括号1241747C011111001|;垂直线1251757D01111101)};右大括号1261767E01111110~;波浪号1271777F011
16、11111;删除ASCH扩展码(字符编码:128-255)后128个称为扩展ASCH码。许多基于x86的系统都支持使用扩展(或高” )ASCIIo扩展ASCII码允许将每个字符的第8位 用于确定附加的128个特殊符号字符、外来语字母和图形符号。中文编码的问题需要专文讨论,这篇笔记不涉及。这里只指出,虽然都是用多个字节表示一个符号,但是GB类的汉字编码与后文的Unicode和UTF-8是毫无 关系的。三.Unicode正如上一节所说,世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用 错误的编码方式解读,就会出现
17、乱码。为什么电子邮件常常出现乱码?就是因为发信人和收信人使用的编码方式不一样。可以想象,如果有一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。这就是Unicode,就像它的名 字都表示的,这是一种所有符号的编码。Unicode当然是一个很大的集合,现在的规模可以容纳100多万个符号。每个符号的编码都不一样,比如,U+0639表示阿拉伯字母Ain, U+0041表示英 语的大写字母A, U+4E25表示汉字严。具体的符号对应表,可以查询unicode, org,或者专门的汉字对应表。四、Unicode的问题需要注意的是,Unicode只是一个符号
18、集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。比如,汉字严的Unicode是十六进制数4E25,转换成二进制数足足有15位也就是说,这个符号的表示至少需要2个字节。表示其他更大的符号,可能需要3个字节或者4个字节,甚至更多。这里就有两个严重的问题,第一个问题是,如何才能区别Unicode和ASCII ?计算机怎么知道三个字节表示一个符号,而不是分别表示三个符号呢?第二个问 题是,我们已经知道,英文字母只用一个字节表示就够了,如果Unicode统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个 字节是0,这对于存储来说是极大的浪费,文本文件的大小会
19、因此大出二三倍,这是无法接受的。它们造成的结果是:1)出现了 Unicode的多种存储方式,也就是说有许多种不同的二进制格式,可以用来表示Unicodeo 2) Unicode在很长一段时间内无法 推广,直到互联网的出现。五、UTF-8十进制DEC八进制OCT十六进制HEX二进制BIN符号SymbolHTML 实体编码中文解释Description1282008010000000;国盟符号12920181100000011302028210000010;单低9引号1312038310000011f带钩的拉丁小写字母f1322048410000100;双低9引号13
20、32058510000101
;水平省略号11342068610000110t;剑号1352078710000111t;1362108810001000八;修正字符 抑扬音符号1372118910001001%o;千分号十进制DEC八进制OCT十六进制HEX二进制BIN符号SymbolHTML 实体编码中文解释Description1382128A10001010S;带弯音号的拉丁大写字母S1392138B10001011;右单书名号1562349C10011100oe;拉丁小写组合oe1572359D100111
21、011582369E10011110z;带弯音号的十进制DEC八进制OCT十六进制HEX二进制BIN符号SymbolHTML 实体编码中文解释Description拉丁小写字母z1592379F10011111 Y;带弯音号的拉丁大写字母Y160240AO10100000 ;161241Al10100001*1¡;反向感叹号162242A2101000100¢;分币符号163243A310100011£;英磅符号164244A410100100¤;165245A510100101¥;人民币符号166246A610100110
22、¦;167247A710100111§;章节符号168250A810101000 ¨;通用货币符号十进制DEC八进制OCT十六进制HEX二进制BIN符号SymbolHTML 实体编码中文解释Description169251A910101001©;版权符号170252AA10101010aª;阴性顺序指示符号171253AB10101011左角引号172254AC10101100-1¬;173255AD10101101;174256AE10101110®;175257AF10101111¯;176260BO1011000
23、0o温度符号177261Bl10110001±;加/减号178262B2101100102²;上标2179263B3101100113³;上标3十进制DEC八进制OCT十六进制HEX二进制BIN符号SymbolHTML 实体编码中文解释Description180264B410110100´;181265B510110101µ;微符号182266B610110110¶;段落符号,pi 1crow183267B710110111·;中点184270B810111000J¸;185271B9101110011¹;上标11862
24、72BA101110100º;阳性顺序 指示符187273BB10111011»;右角引号188274BC10111100%¼;分数四分之一189275BD10111101%½;分数二分之一十进制DEC八进制OCT十六进制HEX二进制BIN190276BE10111110191277BF10111111192300CO11000000193301Cl11000001194302C211000010195303C311000011196304C411000100符号SymbolHTML 实体编码中文解释Description%¾;6¿;反向问号A&
25、#192;带重音符的大写字母AAÁ;带尖锐重音的大写字母A人 AÂ;带音调符号的大写字母A AÃ;带代字号的大写字母A AÄ;带元音变音(分音符号) 的大写字母A十进制DEC八进制OCT十六进制HEX二进制BIN197305C511000101198306C611000110199307C711000111200310C811001000201311C911001001202312CA11001010203313CB11001011符号SymbolHTML 实体编码中文解释DescriptionAÅ;带铃声的大写字母ARÆ;大写字母AE 双重元音
26、qÇ;带变音符号的大写字母CEÈ;带重音符的大写字母Er E&U201;带尖锐重音 的大写字母E/X EÊ;带音调符号的大写字母E EË;带元音变音十进制DEC八进制OCT十六进制HEX二进制BIN符号SymbolHTML1 实体编码文解释Description(分音符号)的大写字母E204314CC11001100iÌ;带重音符的大写字母I205315CD11001101Í;带尖锐重音 的大写字母I206316CE11001110/IÎ;带音调符号的大写字母I207317CF11001111 IÏ;带元音变音(分音符号) 的大写
27、字母I208320DO11010000DÐ;209321DI11010001 NÑ;带代字号十进制DEC八进制OCT十六进制HEX二进制BIN符号SymbolHTML1 实体编码文解释Description的大写字母N210322D2110100100Ò;带重音符的大写字母0211323D3110100110Ó;带尖锐重音的大写字母0212324D411010100人 0Ô;带音调符号的大写字母0213325D511010101 0Õ;带代字号的大写字母0214326D611010110 0Ö;带元音变音 (分音符号) 的大写字母0215
28、327D711010111X×;大写字母互联网的普及,强烈要求出现一种统一的编码方式。UTF-8就是在互联网上使用最广的一种Unicode的实现方式。其他实现方式还包括UTF-16 (字符用两个字 节或四个字节表示)和UTF-32 (字符用四个字节表示),不过在互联网上基本不用。重复一遍,这里的关系是,UTF-8是Unicode的实现方式之一。UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用4个字节表示一个符号,根据不同的符号而变化字节长度。UTF-8的编码规则很简单,只有二条:1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的Unicode码。因此对于英语
29、字母,UTF-8编码和ASCII码是相同的。2)对于n字节的符号(n 1),第一个字节的前n位都设为1,第n + 1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个 符号的Unicode码。下表总结了编码规则,字母X表示可用编码的位:Unicode符号范围(十六进制)UTF-8编码方式(二进制)0000 0000-0000 007F0000 0080-0000 07FF0000 0800-0000 FFFF0001 0000-0010 FFFFOxxxxxxx1lOxxxxx lOxxxxxx11lOxxxx lOxxxxxx lOxxxxxx111lOxxx lO
30、xxxxxx lOxxxxxx lOxxxxxx十进制DEC八进制OCT十六进制HEX二进制BIN216330D811011000217331D911011001218332DA11011010219333DB11011011220334DC11011100221335DD11011101符号SymbolHTML 实体编码中文解释DescriptionOE连字0Ø;带斜杠的大写字母0uÙ;带重音符的大写字母UuÚ;带尖锐重音的大写字母u人 uÛ;带音调符号的大写字母U uÜ;带元音变音(分音符号) 的大写字母UYÝ;带元音变音十进制DEC八进制O
31、CT十六进制HEX二进制BIN符号SymbolHTML1 实体编码文解释Description(分音符号)的大写字母Y222336DE11011110DÞ;223337DF11011111Bß;德语高调小写字母s224340E011100000aà;带重音符的小写字母a225341El11100001/ aá;带尖锐重音的小写字母a226342E211100010人 aâ;带音调符号的小写字母a227343E311100011aã;带代字号的小写字母a十进制DEC八进制OCT十六进制HEX二进制BIN符号SymbolHTML1实体编码文解释Des
32、cription228344E411100100 aä;带元音变音(分音符号) 的小写字母a229345E511100101o aå;带铃声的小写字母a230346E611100110纪æ;小写字母ae双重元音231347E711100111qç;带变音符号的小写字母C232350E811101000eè;带重音符的小写字母e233351E911101001eé;带尖锐重音的小写字母e十进制DEC八进制OCT十六进制HEX二进制BIN符号SymbolHTML1实体编码文解释Description234352EA11101010人 eê;带
33、音调符号的小写字母e235353EB11101011 eë;带元音变音(分音符号) 的小写字母e236354EC11101100X1ì;带重音符的小写字母i237355ED11101101/ 1í;带尖锐重音的小写字母i238356EE11101110A1î;带音调符号的小写字母i239357EF111011111ï;带元音变音 (分音符号)十进制DEC八进制OCT十六进制HEX二进制BIN符号SymbolHTML1 实体编码文解释Description的小写字母i240360F011110000Sð;241361Fl11110001 nñ;带代字号的小写字母n242362F2111100100ò;带重音符的小写字母0243363F3111100116ó;带尖锐重音的小写字母0244364F411110100人 0ô;带音调符号的小写字母0245365F511110101 0õ;带代字号的小写字母0十进制DEC八进制OCT十六进制HEX二进制BIN246366F611110110247367F711110111248370F811111000249371F911111001250372FA111110102