字符编码小结

mac2022-06-30  77

预备知识

==============================存储器位(bit),字节(byte),字(word), 双字(double word)1 byte = 8 bits1 word = 2 bytes = 16 bits1 double word = 2 words = 4 bytes = 32 bits

ASCII编码

==============================单字节来自远古时代。计算机最初是在美国等国家发明的,所以只需要把英文字母、数字、标点符号表示出来就好。这些字符不多,也就200多个。使用一个字节,从00000000到11111111共2^8=256个字符。如:01000001(即十进制的65)表示字符"A"Python的chr和ord函数,可以对ASCII编码进行了转换。如:chr(65) == 'A', ord('A') == 65

ISO-8859-1编码

==============================单字节ISO-8859-1编码是单字节编码,向下兼容ASCII。其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。此字符集主要支持欧洲使用的语言。

Unicode编码

==============================双字节两个字节,从00000000 00000000到11111111 11111111共表示256*256个字符在Unicode中,原本ASCII中的127个字符只需在前面补一个全零的字节即可,比如前文谈到的字符‘a’:01100001,在Unicode中变成了00000000 01100001。优点:基本各种语言的字符,如东亚文字,阿拉伯文字,藏文字等等缺点:对英文来说浪费严重,原本只需一个字节就能传输的英文现在变成两个字节,非常浪费存储空间和传输速度。unicode在很长一段时间内无法推广,直到互联网的出现。

这是 Python3 中的默认编码!!!!!!

 

UTF-8编码

==============================可变长字节使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。UTF-8的编码规则很简单,只有二条:1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。比如​汉字的"中"字在Unicode中是01001110 00101101,而在UTF-8编码中是11100100 10111000 10101101。

GB2312编码

==============================双字节编码GB2312编码范围:A1A1-FEFE,其中汉字编码范围:B0A1-F7FE。GB2312编码是第一个汉字编码国家标准,由中国国家标准总局1980年发布,1981年5月1日开始使用。GB2312编码共收录汉字6763个,其中一级汉字3755个,二级汉字3008个。同时,GB2312编码收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。

GBK编码

==============================双字节编码GB2312编码的扩展,基本上采用了原来GB2312-80所有的汉字及码位,并涵盖了原Unicode中所有的汉字20902。总共收录了883个符号,21003个汉字及提供了1894个造字码位。由于GBK同时也涵盖了Unicode所有CJK汉字,所以也可以和Unicode做一一对应。

ANSI编码

==============================混合编码Windows简体中文操作系统中,ANSI是默认的编码方式。对于英文文件是ASCII编码,对于简体中文文件是GB2312编码(只针对Windows简体中文版)

转载于:https://www.cnblogs.com/hhh5460/p/5538292.html

最新回复(0)