为什么我不能在Mac OS X Terminal.app上的Python解释器中显示unicode字符?

Bjo*_*orn 10 python unicode macos terminal

如果我尝试粘贴一个unicode字符,如中间点:

·

在我的python解释器中它什么都不做.我在Mac OS X上使用Terminal.app,当我只是在bash中我没有遇到麻烦:

:~$ ·
Run Code Online (Sandbox Code Playgroud)

但在翻译中:

:~$ python
Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 
Run Code Online (Sandbox Code Playgroud)

^^我什么都没得到,它只是忽略了我只是粘贴了这个角色.如果我使用中间点'\ xc2\xb7'的escape\xNN\xNN表示,并尝试转换为unicode,尝试显示点会导致解释器抛出错误:

>>> unicode('\xc2\xb7')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

我在sitecustomize.py中设置了'utf-8'作为我的默认编码,所以:

>>> sys.getdefaultencoding()
'utf-8'
Run Code Online (Sandbox Code Playgroud)

是什么赋予了?这不是终点站.这不是Python,我做错了什么?!

这个问题与这个问题无关,因为这个问题能够将unicode粘贴到他的终端中.

Ale*_*lli 6

unicode('\xc2\xb7')意味着使用默认的编解码器解码有问题的字节字符串,这是ascii - 当然失败了(尝试设置不同的默认编码从来没有运作好,特别是不适用于"粘贴的文字" - 这无论如何都需要不同的设置).您可以使用u'\ xc2\xb7',并查看:

>>> print(u'\xc2\xb7')
·
Run Code Online (Sandbox Code Playgroud)

因为那些当然是两个 unicode字符.而:

>>> print(u'\uc2b7')
?
Run Code Online (Sandbox Code Playgroud)

给你一个unicode角色(一些东方劝说 - 抱歉,我对这些事情一无所知).顺便说一句,这些都不是你想要的"中间点".也许你的意思是

>>> print('\xc2\xb7'.decode('utf8'))
·
Run Code Online (Sandbox Code Playgroud)

中间点.BTW,对我来说(python 2.6.4来自Mac Terminal.app上的python.org):

>>> print('?')
?
Run Code Online (Sandbox Code Playgroud)

哪种让我感到惊讶(我预计会有错误......! - ).

  • Hrm,所有这些对我有用,并清除了我对unicode vs utf-8的一些困惑,但我仍然无法在Mac Terminal.app的python解释器中粘贴unicode字符.我的同事在使用默认的苹果外壳时也不能,但他可以使用python的端口版本,我想这是一个应用程序或剪贴板问题. (2认同)
  • `u'\ xc2\xb7'`与`'\ xc2\xb7'.decode('utf8')`/`unicode('\ xc2\xb7','UTF-8')`不是一回事.前者是两个代码点的Unicode字符串(U + 00C2(带有CIRCUMFLEX的LATIN CAPITAL LETTER A)和U + 00B7(MIDDLE DOT)),后者使用单个代码点(U + 00B7(MIDDLE DOT)评估为Unicode字符串);其UTF-8编码需要两个字节).`u'\ uc2b7'是(如图所示)完全不同的东西:U + C2B7(HANGUL SYLLABLE SEUS). (2认同)