此字符串:
line = '\tlong_plugin_output=\x88\\\\\x97\xe5\xff\x7f\\n'
。。打印时,在我的Macbook Pro上生成以下输出:
^{pr2}$。。但是它在我的ubuntu服务器上产生了这个错误:
>>> line = '\tlong_plugin_output=\x88\\\\\x97\xe5\xff\x7f\\n'
>>> line
'\tlong_plugin_output=\x88\\\\\x97\xe5\xff\x7f\\n'
>>> print(line)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character '\x88' in position 20: ordinal not in range(128)
我在macbook上运行的python版本:
Python 3.3.2 (v3.3.2:d047928ae3f6, May 13 2013, 13:52:24) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
$ uname -a Darwin MacBook-Pro.local 11.4.2 Darwin Kernel Version 11.4.2: Thu Aug 23 16:25:48 PDT 2012; root:xnu-1699.32.7~1/RELEASE_X86_64 x86_64
我在我的Ubuntu服务器上运行的python版本:
Python 3.2.3 (default, Sep 25 2013, 18:25:56) [GCC 4.6.3] on linux2
$ uname -a Linux net.local.net 3.2.2 #3 SMP Thu Jan 26 20:18:37 UTC 2012 i686 i686 i386 GNU/Linux
是什么导致了这些平台上的不同行为?在
Python询问终端正在使用什么编码,并在打印时将unicode字符串编码为字节。你的Ubuntu服务器没有配置为UTF-8显示,你的Mac终端是。在
有关切换终端区域设置的帮助,请参见https://askubuntu.com/questions/87227/switch-encoding-of-terminal-with-a-command。任何可以处理您试图打印的特定代码点的语言环境都可以,但是UTF8可以处理所有Unicode。在
您可以通过打印
sys.stdout.encoding
查看Python检测到的内容:相关问题 更多 >
编程相关推荐