关于编码转换中出现 c2 c3 的问题

使用python爬取网页数据,str.decode('utf-8')之后,结果出现了好多乱码。 

某有限公司流动资金需求500万元(事隔好久了,好像不是这个段编码了)

 在查看了十六进制编码后发现

C3 A6 C5 B8 C2 90 C3 A6 C5 93 E2 80 B0 C3 A9 E2
84 A2 C2 90 C3 A5 E2 80 A6 C2 AC C3 A5 C2 8F C2
B8 C3 A6 C2 B5 C2 81 C3 A5 C5 A0 C2 A8 C3 A8 C2
B5 E2 80 9E C3 A9 E2 80 A1 E2 80 98 C3 A9 C5 93
E2 82 AC C3 A6 C2 B1 E2 80 9A 35 30 30 C3 A4 C2
B8 E2 80 A1 C3 A5 E2 80 A6 C6 92 20 2D 20 C3 A9
C2 A1 C2 B9 C3 A7 E2 80 BA C2 AE C3 A8 C2 AF C2
A6 C3 A6 C6 92 E2 80 A6 20 2D 20 C3 A9 E2 80 A1
E2 80 98 C3 A5 C2 AE C2 9D C3 A4 C2 BF C2 9D C3
A5 C2 B9 C2 B3 C3 A5 C2 8F C2 B0

发现其中存在众多c2 c3等字符,考虑是编码问题。

网上搜了一下发现是因为网站使用了Latin-1(ISO-8859-1)编码后,通过爬虫抓取页面文件后,便会形成utf-8编码的字符,这样初始字符串便被进行了二次编码。单纯使用decode('utf-8')便得到了Latin-1编码后的字符,而后,再以utf-8显示,就会出现上述问题了(p.s. 此处要区分字符串的编码和文本工具显示字符集的区别,字符串编码为按照某种特定格式形成的二进制值,文本工具的字符集则是要文本工具以何种编码规范显示某种编码后的字符串)。

解决方法很简单,再对字符串进行一次解码即可:

str.decode('utf-8').decode('Latin-1')

就会正确显示字符串如下:

 重庆某有限公司流动资金需求500万元

你可能感兴趣的:(关于编码转换中出现 c2 c3 的问题)