当我尝试在Putty中打印某些东西时,为什么会出现此错误?
题
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 38: ordinal not in range(128)
我正在下载一个网站,然后打印其内容......简单。 我必须以某种方式对其进行编码吗?
解决方案
尝试使用utf-8开始。您下载的网站可能具有与ANSI不同的字符集,并且这些额外的字符无法在控制台上打印。
所以你做的地方print text
做print 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')
不隶属于 StackOverflow