为什么我尝试用腻子打印东西时会出现这个错误?

2024-10-02 20:33:43 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我正在下载一个网站,然后打印它的内容…简单。 我一定要编码吗?在


Tags: in内容编码网站asciinotpositionrange
3条回答

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

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

确保您已经将Putty配置为接受UTF-8编码的数据。在

将内容转换为标准输出可能会有问题,因为Python通常不知道系统使用的是什么字符编码。面对这一点,python2假设了最保守的选择,usascii。因此,当您试图打印一个字符串,其中包含不是ASCII格式的字符,比如U+2019智能引号,它会给您这个错误。在

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

print content.encode('UTF-8')

相关问题 更多 >