背景
- 在使用python过程中,经常会遇到这种进制数据
b'xe4xb8xadxe6x96x87'
,看起来会一头雾水
- 本篇博客介绍python如何处理这些编码
编码
- 计算机信息的表示方式只有0,1
- 将图像,语言文字,音视频等转换成二进制存储在计算机,称为编码
- 将0,1组合并赋予不同的含义,且赋予不同的存储空间的方式又称为编码标准
- 不同国家因语言不同,有不同的编码标准
- Unicode 为国际统一编码,即将世界所有字符都分配了一个唯一的数字编号
- 主流的编码标准还有 ASCII、GB2312、GBK、GB18030, GB2312、GBK、GB18030 为汉字字符编码方案的国家标准。
默认编码
- python2默认编码为 ASCII,python3默认编码为 UTF-8
- windows默认编码为 GBK,linux默认编码为 UTF-8
- windows在保存和读取文件均使用 GBK编码,可以在保存文件时指定编码 encoding='utf-8'
python编码转换
- 中间码: 通常用unicode作为中间编码,先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码格式
- 编码(encode): 将unicode的字符串转换成二进制数据的过程和规则
- 解码(decode): 将二进制数据转换为对应的Unicode字符串
encode:str --> bytes
decode:bytes --> str
s = '中国'
print(s.encode('utf-8'))
print(s.encode('utf-8').decode('utf-8'))
>>>
b'xe4xb8xadxe5x9bxbd'
中国
总结
- decode实质是把二进制数据(bytes)转化成人看的懂得英文或者汉字
- python3默认编码为 UTF-8