8

可能重复:
Python UnicodeDecodeError - 我误解了编码吗?

我在 Python 中打印一些 unicode 符号时遇到问题,如下所示:

# encoding: utf-8
print u'ęėįųšįšū'

当我尝试使用 Python 2.7 在我的 VPS Ubuntu 12 服务器上运行它时,我收到一个错误:

UnicodeEncodeError:“ascii”编解码器无法对位置 0-7 中的字符进行编码:序数不在范围内(128)

为什么它会尝试用 ASCII 编码它们?

这些命令在我的本地机器上正确运行。

该文件以 utf-8 正确编码。

4

1 回答 1

10

打印unicode对象需要 Python 猜测输出编码并将 Unicode 代码点编码为该编码。

在您的 VPS 服务器上,输出编码似乎是 ASCII,这是无法检测到编码时的默认值(例如使用管道时)。如果在终端上运行相同的代码,通常会检测到终端编码并且编码成功。

解决方案是根据您的脚本要求显式编码。

请务必阅读Python Unicode HOWTO以了解 Python 如何进行此检测以及为什么需要为您编码。

于 2013-01-22T10:55:52.507 回答