Найти - Пользователи
Полная версия: Кодировки в Python
Начало » Python для новичков » Кодировки в Python
1
Cassum
Добрый день!
Не знаю, может, этот вопрос уже и поднимался, но несколько часов гугления мне нормально ответа так и не дали.
Проблема следующего характера: я получаю от какой-то библиотеки строку, которая изначально была в utf-8, но выглядит она как обычная ascii-шная строка с кучей символов, записанных в виде
\xd0\xa3\xd0\xba\xd0\xb0\xd0\xb6
Ну и далее в таком духе.
При попытке перекодировать её в UTF посредством
codecs.utf_8_encode
, получаю ту же самую строку, с теми же эскейпами символов, при попытке вывести print по этой строке (уже перекодированной), получаю всё то же самое. При попытке сделать print по оригинальной строке - падаю с ощибкой UnicodeDecodeError.
А дальше совсем интересно: обычное
>>> a = 'привет'
>>> a
'\xaf\xe0\xa8\xa2\xa5\xe2'
>>> print a
привет
Проходит абсолютно нормально и без ошибок. Кто-нибудь знает, в чём может быть проблема и как её решить?
dimy44
Вот ваша строка
>>> print '\xd0\xa3\xd0\xba\xd0\xb0\xd0\xb6'
Укаж
>>>
не вижу проблемы.
Cassum
У меня то же самое выглядит следующим образом:
>>> print '\xd0\xa3\xd0\xba\xd0\xb0\xd0\xb6'
╨г╨║╨░╨╢

и ещё маленький момент, посмотрел внимательней, падает не на символах \x, а на тех, что начинаются с \u:
UnicodeEncodeError: 'charmap' codec can't encode character u'\u2013' in position
 422: character maps to <undefined>
dimy44
эта строка в utf-8. Переведите в кодировку вашей консоли
print '\xd0\xa3\xd0\xba\xd0\xb0\xd0\xb6'.decode("utf-8").encode(ваша кодировка)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB