Python2.7 UnicodeEncodeError: 'ascii'编解码器无法在位置0-11对字符进行编码:序数不在范围内(128)

4

我目前正在使用Python 2.7来爬取一个中文网站。

如何将下面的Unicode转换为字符串?

简单的str()函数无法工作并显示出以下错误信息:UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-11: ordinal not in range(128)

先行谢过!

    u'\n\xe4\xb8\xad\xe5\x9b\xbd\xe6\xb7\xb1\xe5\x9c\xb3\n'

1个回答

2

您的字符串已经被编码,因此应该是一个字节对象而不是unicode对象。尝试解决这个问题。即,您抓取的数据的repr应该像这样:

'\n\xe4\xb8\xad\xe5\x9b\xbd\xe6\xb7\xb1\xe5\x9c\xb3\n'

不要这样写:

u'\n\xe4\xb8\xad\xe5\x9b\xbd\xe6\xb7\xb1\xe5\x9c\xb3\n'

要从Unicode对象中恢复中文文本,您可以跳转到字节并返回:

>>> text = u'\n\xe4\xb8\xad\xe5\x9b\xbd\xe6\xb7\xb1\xe5\x9c\xb3\n'
>>> print text.encode('latin-1').decode('utf-8')

中国深圳

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接