为什么可以';我是否在Mac OS X Terminal.app上的Python解释器中显示unicode字符?

为什么可以';我是否在Mac OS X Terminal.app上的Python解释器中显示unicode字符?,python,unicode,macos,terminal,Python,Unicode,Macos,Terminal,如果尝试粘贴unicode字符,如中间点: · 在我的python解释器中,它什么也不做。我在Mac OS X上使用Terminal.app,当我只是在bash中时,我没有遇到任何问题: :~$ · 但在口译员中: :~$ 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

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

·

在我的python解释器中,它什么也不做。我在Mac OS X上使用Terminal.app,当我只是在bash中时,我没有遇到任何问题:

:~$ ·
但在口译员中:

:~$ 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.
>>> 
^^我什么也没得到,只是忽略了我刚刚粘贴的字符。如果我使用中间点“\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)
有什么好处?不是终点站。这不是Python,我做错了什么

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

unicode('\xc2\xb7')
意味着用默认的编码解码器(ascii)解码有问题的字节字符串,这当然失败了(尝试设置不同的默认编码从来都不起作用,尤其是不适用于“粘贴的文字”-这将需要不同的设置)。您可以使用u'\xc2\xb7',并查看:

>>> print(u'\xc2\xb7')
·
因为这当然是两个unicode字符。而:

>>> print(u'\uc2b7')
슷
给你一个单一的unicode字符(某种东方的说服力——对不起,我不知道这些东西)。顺便说一句,这两个都不是你要找的“中间点”。也许你的意思是

>>> print('\xc2\xb7'.decode('utf8'))
·
对我来说,中间的点是.BTW(Mac Terminal.app上python.org的python 2.6.4):


这让我大吃一惊(我以为会出错…!-).

Wow,如果有人想在我有Python的时候回答一个关于Python的问题,那就是Alex Martelli!谢谢!我拥有你所有的Python书籍。Hrm,所有这些都对我起到了作用,消除了我对unicode和utf-8的一些困惑,但我仍然无法在Mac Terminal.app上的Python解释器中粘贴unicode字符。我也不能我的同事使用默认的apple shell时,他可以使用python的端口版本,我想这是应用程序或剪贴板的问题。
u'\xc2\xb7'
'\xc2\xb7'不同。decode('utf8')
unicode('\xc2\xb7','UTF-8')
。前者是两个代码点(u+00C2)的unicode字符串(带扬抑符的拉丁文大写字母A)和U+00B7(中间点)),后者的计算结果是带有单个代码点的Unicode字符串(U+00B7(中间点);其UTF-8编码需要两个字节)。
U'\uc2b7'
是(如图所示)完全不同的东西:U+C2B7(韩语音节SEUS)。我认为这些是韩语字符(如果我错了,请有人纠正我)。它们听起来像“sis”。我也有同样的问题,但默认编码是ascii(不知道为什么):((
>>> print('\xc2\xb7'.decode('utf8'))
·
>>> print('슷')
슷