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

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

有帮助吗?

解决方案

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

所以你做的地方print textprint text.encode('utf-8')

其他提示

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

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

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

print content.encode('UTF-8')
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top