Я получаю ответ сервера, байт:
\xd0\xa0\xd1\x83\xd0\xb1\xd0\xbb\xd0\xb8 \xd0\xa0\xd0\xa4 \xd0\x9a\xd0\xa6\xd0\x91
Это точно кириллица, но я не уверен, какая кодировка. Каждая попытка декодировать его в Python терпит неудачу:
b = b'\xd0\xa0\xd1\x83\xd0\xb1\xd0\xbb\xd0\xb8 \xd0\xa0\xd0\xa4 \xd0\x9a\xd0\xa6\xd0\x91'
>>> b.decode('utf-8')
'\u0420\u0443\u0431\u043b\u0438 \u0420\u0424 \u041a\u0426\u0411'
>>> print(b.decode('utf-8'))
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-4:
character maps to <undefined>
>>> b.decode('cp1251')
'\u0420\xa0\u0421\u0453\u0420±\u0420»\u0420\u0451 \u0420\xa0\u0420¤
\u0420\u0459\u0420¦\u0420\u2018'
>>> print(b.decode('cp1251'))
UnicodeEncodeError: 'charmap' codec can't encode character '\u0420' in
position 0: character maps to <undefined>
Оба результата чем-то напоминают Unicode-escape, но и это не работает:
>>> codecs.decode('\u0420\u0443\u0431\u043b\u0438 \u0420\u0424 \u041a\u0426\u0411',
'unicode-escape')
'Ð\xa0Ñ\x83бли Ð\xa0Ф Ð\x9aЦÐ\x91'
Существует веб-сервис для восстановления кириллических текстов, он может декодировать мои байты с помощью Windows- 1251:
Вывод (исходная кодировка: WINDOWS-1251)
Рубли РФ КЦБ
Но у меня больше нет идей, как к этому подойти.
Я думаю, что что-то упускаю из того, как работает кодирование, поэтому, если проблема кажется вам тривиальной, я был бы очень признателен за небольшое объяснение/ссылку на учебник/некоторые ключевые слова для дальнейшего поиска в Google.
Решение:
Windows PowerShell по умолчанию использует кодовую страницу Windows-850, которая не может обрабатывать некоторые символы кириллицы. Одним из решений является изменение кодовой страницы на Unicode при каждом запуске оболочки:
chcp 65001
Здесь объясняется, как сделать новый дефолт
chcp 65001
может быть трудно обойти ошибки, например,print u'\xc1\xc1'
, вместо этого используйтеwin-unicode-console
(2) не помещайте решение (ответ) в свой вопрос, вместо этого опубликуйте его как свой собственный ответ (чтобы разрешить комментирование, голосование и т. д.) - person jfs   schedule 11.09.2015