Python3和编码:在linux和OSX上不同?

2024-09-30 20:18:06 发布

您现在位置:Python中文网/ 问答频道 /正文

此字符串:

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

是什么导致了这些平台上的不同行为?在


Tags: in版本服务器outputonlinepluginpro
1条回答
网友
1楼 · 发布于 2024-09-30 20:18:06

Python询问终端正在使用什么编码,并在打印时将unicode字符串编码为字节。你的Ubuntu服务器没有配置为UTF-8显示,你的Mac终端。在

有关切换终端区域设置的帮助,请参见https://askubuntu.com/questions/87227/switch-encoding-of-terminal-with-a-command。任何可以处理您试图打印的特定代码点的语言环境都可以,但是UTF8可以处理所有Unicode。在

您可以通过打印sys.stdout.encoding查看Python检测到的内容:

>>> import sys
>>> sys.stdout.encoding
'UTF-8'

相关问题 更多 >