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

2024-05-16 22:00:48 发布

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

如果我尝试粘贴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)

我在sitecustomize.py中将“utf-8”设置为默认编码,因此:

>>> sys.getdefaultencoding()
'utf-8'

给什么?不是终点站。不是Python,我做错什么了?!

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


Tags: inbashappos粘贴macunicode字符
1条回答
网友
1楼 · 发布于 2024-05-16 22:00:48

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

>>> print(u'\xc2\xb7')
·

因为它们是两个unicode字符。当:

>>> print(u'\uc2b7')
슷

给你一个单一的unicode字符(某种东方的说服力——抱歉,我对这些东西一无所知)。顺便说一下,这两个都不是你要找的“中间点”。也许你是说

>>> print('\xc2\xb7'.decode('utf8'))
·

其中中间点。顺便说一句,对我来说(python 2.6.4来自Mac Terminal.app上的python.org):

>>> print('슷')
슷

这让我很惊讶(我预料到一个错误。。。!-).

相关问题 更多 >