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

Why can't Python print Unicode symbols?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Python UnicodeDecodeError - Am I misunderstanding encode?

在Python中打印以下Unicode符号时遇到问题:

1
2
# encoding: utf-8
print u'???????ū'

当我尝试用python 2.7在我的vps ubuntu 12服务器上运行这个程序时,我得到一个错误:

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

为什么它试图用ASCII编码它们?

命令在本地计算机上正确运行。

文件正确编码为UTF-8。


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

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

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

请务必阅读python unicode如何理解python如何进行这种检测以及为什么需要为您编码。