python快速入门-字符编码
来源:
奇酷教育 发表于:
python快速入门-字符编码。
计算机中显示的文字都需要编码格式的支持,否则你只能看到0、1组成的神秘序列
什么是编码:
计算机出生之初仅仅为了计算,所以只有数字0、1
后来,计算机有了更多的诉求,希望能记录更多的文字信息,但是计算机还是只认识0、1怎么办?
有人出了主意:让数字0代表一个字,数字1代表一个字以此类推:
0--文字1
1--文字2
2--文字3
3--文字4
4--文字5
......
于是这样的对照表就称为编码格式
编码的变迁史:
早期计算机表示的数字很少:8位机时代 0-255 所以只能表示256个文字 ascii编码格式/iso8859-1
chr(数字)可以将数字变为码表中的文字
print(chr(97))
计算机迅速传入各个国家:中国出现了gbk(国标码) gb2312(简体码) big5(繁体码)
乱码时代:各个国家都有各自的编码格式,那么计算机在传输后,就会乱码:
例:
可以使用内置函数ord(‘文字’)获取文字的底层数据:
print(ord('中'))
“中”:底层数字是20013
但是可能韩文编码下可能未对20013进行映射,那么就会显示? 这就是乱码!
大一统时代:unicode
unicode的出现让乱码乱象得到控制
unicode码将几乎所有文字都约束在它的编码之下,世界使用一种码,自然没有乱码
中文范围:"\u4e00"--"\u9fa5"
print("\u4e2d")
现状:utf-8
unicode作为国际统一码,也叫双字节编码,不利于网络传输,网络大多流转英文字符居多
so就出现了变种的unicode:utf-8:英文单字节,其他文字三字节。
为了世界不再乱码,请用utf-8!!!
组码:会得到一个bytes序列
字符串.encode(encoding='UTF-8', errors='strict')
解码:会得到一个按编码解析的字符串
字节序列.decode(encoding='UTF-8', errors='strict')
如果设置为strict,代表遇到非法字符时抛出异常;
如果设置为ignore,则会忽略非法字符;
如果设置为replace,则会用?取代非法字符;
如果设置为xmlcharrefreplace,则使用XML的字符引用