Scrapy打造搜索引擎学习笔记 - 2 - Unicode与UTF-8

Anbinx 2021-01-02 PM 138℃ 0条

字符串编码
1,计算机只能处理数字,文本转换为数字才能处理。计算机中8个bit作为一个字节,所以一个字节能表示最大的数字就是255
2,计算机是美国人发明的,所以一个字节可以表示所有字符了,所以ASCII(一个字节)编码就成为美国人的标准编码
3,但是ASCII处理中文明显是不够的,中文不止255个汉字,所以中国制症了GB2312编码,用两个字节表示一个汉字。GB2312还把ASCII包含进去了,同理,日文,韩文等等上百个国家为了解决这个问题就都发展了一套字节的编码,标准就越来越多,如果出现多种语言混合显示就一定会出现乱码
4,于是unicode出现了,将所有语言统一到一套编码里5,看一下ASCII和unicodefi码:

1)字母A用ASCI码十进制是65,二进制01000001
2)汉字"中"已近超出了ASCI码的范围,用unicode编码是20013二进制是0100111000101101
3)A用unicode编码只需要前面补0二进制是0000000001000001

6,乱码问题解决了/但是如果内容全是英文,unicode码比ASCII需要多一倍的存储空间,同时如果传输需要多一倍的传输。
7,所以出现了可变长的编码"utf-8",把英文变成一个字节,汉字3个字节。特别生僻的变成4·6字节,如果传输大量的英文,utf8作用就很明显了

在编程时,如果使用utf-8编码,由于字符占用空间不统一,会造成编程上的困难

image-20201231184532724

str.decode("x"):将原始编码为x的str解码成Unicode(在内存中统一以unicode存放)

str.encode("x"):将原始编码为Unicode的str编码为x


python2:对py文件仍保留utf-8编码,需要在文件开头声明编码格式

python3:所有py文件统一为Unicode

标签: python, 原创

非特殊说明,本博所有文章均为博主原创。

评论呢


captcha
请输入验证码