Python2.7 UnicodeEncodeError : 'ascii' codec can't encode characters in position 0-11: ordinal not in range(128)

标签 python python-2.7 unicode encoding mojibake

我目前正在使用 python 2.7 并在中文网站上进行网页抓取。

如何将下面的unicode转成字符串?

简单的 str() 函数不起作用并声明 UnicodeEncodeError: 'ascii' 编解码器无法对位置 0-11 中的字符进行编码:序号不在范围内 (128)

提前致谢

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

最佳答案

您的字符串已经编码,因此它应该是字节对象而不是 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')

中国深圳

关于Python2.7 UnicodeEncodeError : 'ascii' codec can't encode characters in position 0-11: ordinal not in range(128),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40598288/

相关文章:

python - 错误打印字符串 : %d format: a number is required, 不是 str

python - __init__ 中的成员分配和引用计数

python - 带有值检查的生成器表达式

c++ - 我应该使用 wchar 还是 char 来加密?

python - 在每个文字的基础上指定 unicode 文字的编码

python - 将 python virtualenv 克隆到离线服务器

javascript - 如何使用单个脚本函数分别更改多个产品的价格?

Python:如何检测 qplainTextEdit 中的文本然后启用按钮?

python-2.7 - python中的双点运算符(..)是什么?

java - 如何将任何语言和字符集的字符串转换为 Java 中的有效文件名?