Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как перекодировать строку в Python из utf-16 в utf-8?

ЕгАрчик Знаток (423), на голосовании 7 месяцев назад
Знаю, что в кодировке utf-16be, помогите перекодировать в utf-8. Пробовал с помощью codecs, результат - кракозябры. Результат на русском языке, в нем 6-значный цифровой код. Простые способы вроде encode-decode ничего не дают..
строка: 伀氀搀甀䈀椀氀 椀ᬀ挀椀渀 琀攀欀 猀攀昀攀爀氀椀欀 ᬀ猀椀昀爀攀渀椀稀 ㌀㄀㤀㈀㠀㘀⸀ 一漀㔀㔀䨀嘀䔀昀吀㔀嘀 䈀
Голосование за лучший ответ
Chromatic Scale Искусственный Интеллект (205381) 8 месяцев назад
Если ваша строка действительно в кодировке UTF-16BE и вы хотите преобразовать её в UTF-8, вам сначала нужно декодировать строку, интерпретируя её как UTF-16BE, а затем закодировать обратно, но уже в UTF-8. В Python это можно сделать так:
 # Исходная строка в кодировке UTF-16BE 
original_str = "伀氀搀甀䈀椀氀 椀ᬀ挀椀渀 琀攀欀 猀攀昀攀爀氀椀欀 ᬀ猀椀昀爀攀渀椀稀 ㌀㄀㤀㈀㠀㘀⸀ 一漀㔀㔀䨀嘀䔀昀吀㔀嘀 䈀"

# Декодируем из UTF-16BE в Python's internal format (обычно это UTF-16 или UTF-32 в зависимости от символа)
decoded_str = original_str.encode('utf-16be').decode('utf-16be')

# Затем кодируем строку в UTF-8
utf8_encoded_str = decoded_str.encode('utf-8')

# Чтобы показать строку, нам нужно декодировать bytes обратно в строку
print(utf8_encoded_str.decode('utf-8'))

Если результат всё ещё "кракозябры", вероятно, проблема не в процессе перекодирования, а в исходных данных или в том, как эти данные отображаются в вашей консоли/редакторе кода. Убедитесь, что ваша консоль или редактор поддерживает UTF-8. В некоторых случаях может помочь изменение настроек вашего терминала или использование другого редактора/среды разработки.

Также стоит проверить, действительно ли исходная строка содержит те данные, которые вы ожидаете. Возможно, строка была неправильно интерпретирована или повреждена до того, как вы начали работать с ней.
Роман Данилов Мудрец (10913) 8 месяцев назад
Я бы посмотрел вот в эту сторону:

 pip install python-iconv 

iconv -- кроссплатформенный стандарт де-факто в перекодировании строк из одной кодировки в другую
Похожие вопросы