python crawler得到凌乱的代码,似乎有多种类型的编码

时间:2017-02-11 08:01:04

标签: python encoding utf-8 decode

我找到了一个位置,实际上应该是' \ xe6 \ x9d \ xad \ xe5 \ XB7 \ x9e \ xe5 \ XB8 \ X82&#39 ;.我怎么能解码这样的东西?

1 个答案:

答案 0 :(得分:0)

我建议你阅读python 2.7 unicode

\u0107\x9d\xad\u013a\u02c7\x9e\u013a\xb8\x82不等于\xe6\x9d\xad\xe5\xb7\x9e\xe5\xb8\x82,因此我认为您的抓取工具代码存在问题。

在python2.x中,你应该注意编码问题。在Python2中我们有两种文本类型: str用于所有意图和目的仅限于ASCII + 7位范围以上的一些未定义数据,unicode等同于Python 3 str类型和一个字节类型bytearray,它继承自Python 3。

Python2通过允许强制字节字符串和非字节字符串提供从非Unicode到Unicode的迁移路径。 您可以查看More About Unicode in Python 2 and 3

您也可以在脚本开头添加它,它将系统默认编码设置为utf-8。它是测试程序的用户,它将解决您的问题。

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

事实上,我并不建议程序员在大型程序中使用它。它可能会引发其他问题。

实际上不鼓励Python2.x中的编码问题,如果你想避免编码问题,你应该开始认真考虑切换到Python3。

希望这有帮助。