Если я пытаюсь вставить символ 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, что я делаю не так?!
Этот вопрос не относится к этому вопросу , так как этот индивид способен вставлять юникод в свой терминал.
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('슷')
슷
что меня удивило (я ожидал ошибки ...! -).