当我尝试在Putty中打印某些东西时,为什么会出现此错误?

时间:2009-10-29 11:19:42

标签: python unicode encoding ascii

UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 38: ordinal not in range(128)

我正在下载一个网站,然后打印其内容......简单。 我必须以某种方式对其进行编码吗?

3 个答案:

答案 0 :(得分:2)

尝试使用utf-8开始。您下载的网站可能具有与ANSI不同的字符集,并且这些额外的字符无法在控制台上打印。

所以在print text执行print text.encode('utf-8')的地方。

答案 1 :(得分:0)

确保将Putty配置为接受UTF-8编码数据。

答案 2 :(得分:0)

print标准输出的内容可能会有问题,因为Python通常不知道系统使用的是什么字符编码。面对这一点,Python 2假设最保守的选择,US ASCII。因此,当您尝试打印包含非ASCII字符的字符串时,例如U + 2019智能引用,它会给您出错。

在Python 3中,sys.stdout.encoding的默认字符集猜测是UTF-8。如果您确定您的标准输出(即您的情况下的PuTTY)应该接受UTF-8,那么您可以明确地对其进行编码:

print content.encode('UTF-8')