Я использую интерпретатор Python в терминале Windows 7.
Я пытаюсь сосредоточиться на юникоде и кодировках.
Я набираю:
>>> s='ë'
>>> s
'\x89'
>>> u=u'ë'
>>> u
u'\xeb'
Вопрос 1 : Почему кодировка, используемая в строке s
, отличается от той, которая используется в юникоде string u
?
Продолжаю и набираю:
>>> us=unicode(s)
Traceback (most recent call last):
File "", line 1, in
UnicodeDecodeError: 'ascii' codec can't decode byte 0x89 in position 0: ordinal
not in range(128)
>>> us=unicode(s, 'latin-1')
>>> us
u'\x89'
Question2 : Я попытался использовать кодировку latin-1
, если повезет, чтобы превратить строку в юникод строка (на самом деле я сначала попробовал несколько других, включая utf-8
). Как мне узнать, какую кодировку терминал использовал для кодирования моей строки?
Вопрос 3 : как я могу заставить терминал печатать Хм, глупый я. ë
как ë
вместо '\ x89'
или u'xeb '
? print (s)
выполняет свою работу.
Я уже рассматривал этот связанный вопрос SO, но никаких подсказок оттуда: Установить кодировку терминала Python в Windows