为什么我在Putty中打印时会出现这个错误?
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 38: ordinal not in range(128)
我正在下载一个网站,然后打印它的内容……很简单。 我需要以某种方式进行编码吗?
3 个回答
0
确保你的Putty设置为可以接收UTF-8编码的数据。
0
在标准输出上打印东西可能会遇到问题,因为Python有时候不知道系统使用的是什么字符编码。对于这个问题,Python 2会选择最保守的方式,也就是US ASCII。所以当你尝试打印一个包含非ASCII字符的字符串,比如U+2019这个智能引号’
时,就会出现错误。
而在Python 3中,默认的字符集猜测是UTF-8。如果你确定你的标准输出(比如你使用的PuTTY)应该接受UTF-8编码,那么你可以明确地进行编码:
print content.encode('UTF-8')
2
首先试试用utf-8编码。你下载的网站可能使用的字符编码和ANSI不一样,那些额外的字符在控制台上可能无法显示。
所以在你使用 print text
的地方,改成 print text.encode('utf-8')
。