我在Python中打印一些Unicode符号时遇到了问题,就像这样:
# encoding: utf-8
print u'ęėįųšįšū'
当我尝试在我的VPS Ubuntu 12服务器上使用Python 2.7运行此代码时,出现错误:
UnicodeEncodeError:'ascii'编解码器无法对位置0-7中的字符进行编码:序数不在范围内(128)
为什么它要尝试使用ASCII进行编码?
这些命令在我的本地机器上正确运行。
该文件以utf-8正确编码。
我在Python中打印一些Unicode符号时遇到了问题,就像这样:
# encoding: utf-8
print u'ęėįųšįšū'
打印 unicode
对象需要 Python 猜测输出编码并将 Unicode 代码点编码为该编码。
在您的 VPS 服务器上,输出编码似乎是 ASCII,在无法检测到编码时(例如使用管道时)会默认使用此编码。如果您在终端上运行相同的代码,则通常会检测到终端编码,并且编码会成功。
解决方案是根据脚本要求显式编码。
请阅读 Python Unicode HOWTO 以了解 Python 如何进行此检测以及为什么需要为您编码。
sys.stdout.encoding
,在这种情况下可能不是 utf-8。 - Taha Jahangir
sys.getdefaultencoding()
的值即可。 - Ashwini Chaudhary