天天看点

Python字符串之encode & decode

1. Encode

将str类型编码成bytes类型:

>>>strs = '中文English'
>>>strs.encode('utf-8')
           
b'\xe4\xb8\xad\xe6\x96\x87English'
           
b'\xd6\xd0\xce\xc4English'
           
b'\xe4\xb8\xad\xe6\x96\x87English'
           

bytes()函数同str.encode()。

2. Decode

将bytes类型(如utf-8编码)解码成str类型:

'中文ENGLISH'
           

3. 解码错误情况

如果将utf-8编码的bytes类型解码成gb2312时出错,可通过第三方库

chardet

函数

detect

检测出编码方式。

from charted import detect
wd = '中华人民共和国'
wt = ws.encode('utf-8')
print(wt)
detect(wt)
           

将返回结果:

b'\xe4\xb8\xad\xe5\x8d\x8e\xe4\xba\xba\xe6\xb0\x91\xe5\x85\xb1\xe5\x92\x8c\xe5\x9b\xbd'
{'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}
           

encoding的值为其检测出的编码类型,确认是该编码的置信度为confidence的值,此处将中文字符编码成utf-8后未能识别出语言。

下面,再将wd编码成gb2312,

wt1 = ws.encode('gb2312')
detect(wt1)
           

返回结果:

{'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'}
           

识别出语言为中文。