Сначала я меняю кодировку Windows CMD на utf-8 и запускаю интерпретатор Python:
chcp 65001
python
Затем я пытаюсь напечатать внутри него юникод, и когда я это сделаю, Python резко сработает (я просто получаю приглашение cmd в том же окне).
>>> import sys
>>> print u'ëèæîð'.encode(sys.stdin.encoding)
Любые идеи, почему это происходит и как заставить его работать?
UPD: sys.stdin.encoding
возвращает 'cp65001'
UPD2: мне пришло в голову, что проблема может быть связана с тем, что utf-8 использует многобайтовый символ установить (kcwu сделал хорошую оценку). Я попробовал запустить весь пример с "windows-1250" и получил "ëea"? ". Windows-1250 использует односимвольный набор, поэтому он работает для тех символов, которые он понимает. Однако я до сих пор не знаю, как сделать" utf-8" здесь.
UPD3: О, я узнал, что это известная ошибка Python. Я предполагаю, что происходит, что Python копирует cmd-кодировку как 'cp65001 в sys.stdin.encoding и пытается применить ее ко всем входам. Так как он не понимает "cp65001", он сбрасывается на любой вход, содержащий символы не-ascii.