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