为什么我在Putty中打印时会出现这个错误?

2 投票
3 回答
639 浏览
提问于 2025-04-15 15:29
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')

撰写回答