为什么Python无法打印Unicode符号?

9 浏览
0 Comments

为什么Python无法打印Unicode符号?

我在Python中遇到了打印一些Unicode符号的问题,像这样:

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

当我在我的VPS Ubuntu 12服务器上尝试运行这段代码时,我遇到了一个错误:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-7: ordinal not in range(128)

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

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

文件已正确编码为utf-8。

0
0 Comments

为什么Python不能打印Unicode符号?

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

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

解决方法是根据你的脚本需求明确地进行编码。

请阅读Python Unicode HOWTO以了解Python如何进行这种检测以及为什么它需要为你进行编码。

请对这类问题进行评论,因为每天都会有人问类似的问题。你只需要重复FAQ的答案。

输出编码sys.stdout.encoding,在这种情况下可能不是utf-8。

0