Почему я не могу отобразить символ Unicode в интерпретаторе Python в Mac OS X Terminal.app?

Если я пытаюсь вставить символ Unicode, например среднюю точку:

·

в моем интерпретаторе python, это ничего не делает. Я использую Terminal.app в Mac OS X, и когда я просто в 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.
>>> 

^^ Я ничего не получаю, просто игнорирую, что я просто вставил персонажа. Если я использую escape-представление \ xNN \ xNN средней точки '\ xc2 \ xb7' и пытаюсь конвертировать в юникод, при попытке показать точку интерпретатор выдает ошибку:

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

Я установил utf-8 в качестве кодировки по умолчанию в sitecustomize.py так:

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

Что дает? Это не Терминал. Это не Python, что я делаю не так?!

Этот вопрос не относится к этому вопросу , так как этот индивид способен вставлять юникод в свой терминал.

10
задан Community 23 May 2017 в 11:59
поделиться

1 ответ

unicode ('\ xc2 \ xb7') означает декодирование рассматриваемой байтовой строки с помощью кодека по умолчанию, которым является ascii - и что конечно, не удается (попытка установить другую кодировку по умолчанию никогда не давала должного результата, и, в частности, не применяется к «вставленным литералам» - для этого в любом случае потребуется другой параметр ). Вместо этого вы можете использовать u '\ xc2 \ xb7' и увидеть:

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

, поскольку это, конечно, два символа Юникода. В то время как:

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

дает вам единственный символ Юникода (из некоторых восточных убеждений - извините, я не знаю об этих вещах). Кстати, ни один из них не является «средней точкой», которую вы искали. Возможно, вы имеете в виду

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

, где является средней точкой. Кстати, для меня (python 2.6.4 с python.org на Mac Terminal.app):

>>> print('슷')
슷

что меня удивило (я ожидал ошибки ...! -).

6
ответ дан 4 December 2019 в 03:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: