python中字符串输出乱码怎么解决,python乱码问题
字符:各种字符和符号的总称,比如一个符号,一个字母字符集:它代表一组所有的字符,相当于一个二维表,包含了所有可以显示的字符常见的字符集有ASCII、GB2312、GBK、GB18030、BIG5、Unicode编码:将字符转换为计算机系统可以识别的数字的规则解码:用规则显示计算机可以识别为字符的数字
ASCII字符集和ASCII编码(单字节)
美国信息交换标准码一套以拉丁字母为基础的计算机编码系统,主要显示现在的英语和一些常用的西文符号用7位二进制码表示一个字符,总共表示127个字符由于一些西欧国家的需要,扩展位EASCII是针对ASCII码而做的,用8位来表示一个字符,总共可以表示256个字符
GBXXXX字符集和BIG5(双字节)
当计算机传播到东亚国家时,国际标准被提高了因此,不同的国家仍然使用这种继续扩展ASCII的二维表因为一个字节的八位明显不够用,所以出现了双字节编码不同的国家出现了不同的编码标准GB2312中国国家标准简体中文字符集用两个字节表示汉字的编码,只表示常用的6763字符和非汉字的682编码仍然不支持繁体字,所以出现了港台的BIG5和日本的Shift_JIS
6763个汉字当然不能满足要求,于是微软发明了GBK,利用GB2312未使用的编码空间进行编码共包含883个符号、27533个汉字和1894个造字码点不过不是没有采用国家编码标准,而是微软的,影响很大后来GB18130-2000兼容GBK,GB18130-2005增加了我国少数民族语言的超大中文编码字符集在GB18030-2000的基础上,增加了42711个中国各少数民族语言的汉字和代码,共收录了70244个汉字GB18030-2005标准中的字符分别采用单字节、双字节或四字节编码GB 18030-2005具有以下特点:
与UTF-8相同,采用多字节编码,每个字可以由1、2或4个字节组成编码空间巨大,最多可以定义161万个字符没有必要使用造字区来支持中国的少数民族文字汉字的范围包括繁体汉字和日韩汉字这个时候,问题似乎就解决了我想用英文显示中文、GB系列和ASCII或EASCII本地互相访问还可以,但是一旦出现在网络中,使用不同的编码方式,互相访问就是乱码每个字符集只是使用了不同的表格,每个字符在每个表格中的排列顺序也不同所以如果一个字符用GBXXXX编码,用UTF-8解码,就找不到这个字符,或者显示奇怪的字符,就会出现乱码.Unicode
于是出现了一个强大的Unicode,这里收录了大量的字符,包括汉字和其他各国常用的字符在这个字符集中,所有的字符代码都是唯一的
UTF-8、UTF-16和UTF-32都是Unicode的实现
UTF-8是一种变长编码方式,表示范围为1~4字节UTF-16和UTF-32每个字符分别由两个或四个字节和四个字节表示
它的编码方式也比较简单比如汉字‘颜’,其unicode十六进制数为4E25,有15位(10011000100100101),至少需要两个字节有些需要三个四字节如何判断哪些字节是字符?
因此,UTF-8采用的变长编码规则是:
Unicode符号范围 UTF-8编码方法
(十六进制)(二进制)
———————- ———————————————
0000 0000-0000 007F 0xxxxx
xx
0000 0080-0000 07FF 110
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。