python unichr 问题

标签 python unicode ubuntu

我的服务器上的 unichr() 有问题。请看下面:

在我的服务器上(Ubuntu 9.04):

>>> print unichr(255)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xff' in position 0: ordinal not in range(128)

在我的桌面上(Ubuntu 9.10):

>>> print unichr(255)
ÿ

我是 python 的新手,所以我不知道如何解决这个问题。有人愿意帮忙吗?谢谢。

最佳答案

当使用“print”关键字时,您将写入 sys.stdout 输出流。如果字符可以使用 str(message) 转换为 ascii,sys.stdout 通常只能显示 Unicode 字符串。

打印时您需要编码为操作系统的终端编码才能执行此操作。

locale 模块有时可以检测输出控制台的编码:

import locale
print unichr(0xff).encode(locale.getdefaultlocale()[1], 'replace')

但通常最好自己指定编码,因为 python 经常出错:

print unichr(0xff).encode('latin-1', 'replace')

UTF-8 或 latin-1 我认为在许多现代 linux 发行版中经常使用。

如果您知道控制台的编码,当您使用“print”时,下面的行将自动对 Unicode 字符串进行编码:

import sys
import codecs
sys.stdout = codecs.getwriter(ENCODING)(sys.stdout)

如果编码是 ascii 或类似的东西,您可能需要更改操作系统的控制台编码才能显示该字符。

另请参阅:http://wiki.python.org/moin/PrintFails

关于python unichr 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2583425/

相关文章:

javascript - Python:可以使用 JSON 将包含加密部分的消息发送到 Python 服务器吗?

python - 如何在gridsearchcv中使用log_loss记分器?

Delphi 2009 RawByteString 变幻莫测

ruby - iconv rvm 安装错误

ruby - 在 Ubuntu 中为 open() 方法指定一个非标准的临时目录

python - `nltk` CoreNLP解析器: prevent splitting at hyphens in POS tagger

python - 模糊图像服务器端或使用 CSS

java - 打印编码的 unicode 字符

css - 如何为 @font-face 正确解析 Devanagari/Hindi

ubuntu - Git : ERROR: Permission to repo. git 拒绝用户