编码演变史:
ASCII编码(英文,无中文)——》中文GB2312,日文 shift-JIS 等——》unicode统一编码(不可变长,针对所有语言)——》utf-8(针对所有语言,长度可变)
计算机系统中字符工作方式:
内存:unicode编码
磁盘/传输:utf-8编码
python中:
内存中unicode编码
python2文件:ascii编码 ,python3文件:utf-8
解码与编码:
decode解码:其他编码/bytes(磁盘,传输)——》Unicode/str(内存)
encode编码:Unicode/str(内存)——》其他编码/bytes(磁盘,传输)
chardet 检查编码
1.安装
pip install chardet
2.使用
>>> chardet.detect(b'Hello, world!')
{'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
https://www.liaoxuefeng.com/wiki/1016959663602400/1183255880134144
相关问题
https://www.cnblogs.com/yoyoketang/p/8058873.html
编码演变史:
ASCII编码(英文)——》中文GB2312,日文 shift-JIS 等——》unicode统一编码(不可变长,针对所有语言)——》utf-8(针对所有语言,长度可变)
python内存: unicode
磁盘/传输:2进制(bytes)
总结:
这两个方法都是以unicode为中间编码,decode(‘utf-8’)把utf-8的二进制数据转化为uncode编码的字符串(内存),encode(’utf-8‘)把unicode的字符串(内存)转为utf-8的二进制?
编码encode():str——》bytes
解码decode():bytes——》str
bytest是python3中才有的类型,原始的字节形式(2进制,实质上就是机器语言01的表现形式),非单位