UnicodeEncodeError: 'ascii'编解码器无法将字符u'\xe7'编码在位置17710处:该序数不在范围内(128)。

9

我试图从存档的网络爬虫中打印一个字符串,但是当我这样做时,我会得到以下错误:

print page['html']
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe7' in position 17710: ordinal not in range(128)

当我尝试打印unicode(page['html'])时,我得到:
print unicode(page['html'],errors='ignore')
TypeError: decoding Unicode is not supported

有任何想法如何正确编码这个字符串,或者至少让它打印出来吗?谢谢。

4
http://farmdev.com/talks/unicode/ - Ignacio Vazquez-Abrams
2
这是迄今为止最常见的Python问题。 - KurzedMetal
1个回答

22
你需要 编码 保存的Unicode才能显示它,而不是 解码 它-- Unicode是未编码的形式。你应该总是指定一个编码方式,这样你的代码就会具有可移植性。 "通常" 的选择是 utf-8:
print page['html'].encode('utf-8')

如果你没有指定编码,那么是否能正常工作将取决于你要输出到的地方——你的编辑器、操作系统、终端程序等等。


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