0 / 0 / 0
Регистрация: 30.03.2019
Сообщений: 14

Декодирование utf-8

12.07.2023, 01:40. Показов 1349. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравствуйте.
Столкнулся со следующей проблемой:
Имею условную строку в виде \u0414\u043e\u0431\u0440\u044b\u0439 \u0434\u0435\u043d\u044c
в идеале необходимо преобразовать ее в "Добрый день"
Перекопал половину stackoverflow, нашел огромную массу вариантов преобразования, но ни один из них не работает,
как бы я не пытался, строка не изменяется совершенно никаким образом.

Для примера приведу несколько простых и не очень вариантов, которые уже использовал:

Python
1
2
3
4
s = '''\\xed\\xe5 \\xff?xb\\xff\\xe5\\xf2\\xf1\\xff \\xef\\xf0\\xe8\\xeb\\xee\\xe6\\xe5\\xed\\xe8\\xe5\\xec'''
 
s = s.encode().decode("utf-8")
print(s)
Python
1
2
from unidecode import unidecode
print(unidecode(s))
Пытался записать строку в файл и далее прочитать из файла через кодировку:

Python
1
2
3
with open('exam.txt', 'rb') as f:
    bs = f.read()
    print(bs.decode('utf-8'))
Результат все равно выходит в спецсимволах.

При всем при этом, если залезть в интернет, на любой из онлайн декодеров и там ввести эту строку, то все будет отлично, результат действительно будет "Добрый день", автоматический поиск кодировок покажет, что переводим из кодировки "unicode" в "utf-8"

При попытке передать кодировку "unicode":

Python
1
2
3
4
5
s = '''\\xed\\xe5 \\xff?xb\\xff\\xe5\\xf2\\xf1\\xff \\xef\\xf0\\xe8\\xeb\\xee\\xe6\\xe5\\xed\\xe8\\xe5\\xec'''
s = s.encode('unicode').decode("utf-8")
print(s)
 
>>>LookupError: unknown encoding: unicode
Кстати, возвращаясь к попыткам прочитать из файла, пробовал и такой вариант:

Python
1
2
3
import io
f = io.open("exam.txt", mode="r", encoding="utf-8")
print(f.read())
Собственно, как это бедствие преобразовать в обычную кириллицу?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.07.2023, 01:40
Ответы с готовыми решениями:

Декодирование строки
Здравствуйте. Есть сервер на питоне на http, и клиент. С клинта на сервер отправляется такая структура: JSON.stringify({ ...

Декодирование символов
Добрый день! Имеется следующая последовательность: cf f0 e8 e2 e5 f2 (Привет cp1251). Исходно получена из: \'cf\'f0\'e8\'e2\'e5\'f2...

Декодирование строки
На прошлой неделе мы сжимали строки, используя кодирование повторов. Теперь нашей задачей будет восстановление исходной строки обратно. ...

4
 Аватар для s_t_r_a_j
526 / 179 / 58
Регистрация: 12.02.2023
Сообщений: 641
12.07.2023, 08:27
Python
1
2
s = '\u0414\u043e\u0431\u0440\u044b\u0439 \u0434\u0435\u043d\u044c'
print(s)
Bash
1
Добрый день
в чем проблема?
0
Любознательный
 Аватар для YuS_2
7406 / 2260 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
12.07.2023, 09:44
Цитата Сообщение от s_t_r_a_j Посмотреть сообщение
в чем проблема?
это проблема "XY" (молотка)...

Цитата Сообщение от Satain Посмотреть сообщение
Столкнулся со следующей проблемой:
Имею условную строку в виде \u0414\u043e\u0431\u0440\u044b\u0439 \u0434\u0435\u043d\u044c
Вы не описали саму проблему X, то бишь, как именно Вы получаете строку и с какой целью пытаетесь её преобразовывать...

Но так, чтобы "кувалдой перешибить молоток" (решением проблемы Y), можно действовать следующим образом:
Python
1
2
3
s = '\\xed\\xe5 \\xff?xb\\xff\\xe5\\xf2\\xf1\\xff \\xef\\xf0\\xe8\\xeb\\xee\\xe6\\xe5\\xed\\xe8\\xe5\\xec'
res = s.encode('latin1').decode('unicode_escape').encode('latin1')
print(res.decode('cp1251')) #не я?xbяется приложением
1
0 / 0 / 0
Регистрация: 30.03.2019
Сообщений: 14
12.07.2023, 14:26  [ТС]
В вашем конкретном случае все работает, похоже я совершенно не понимаю логику .encode.decode, если в ваше решение в строку s поставить мою строку, то я получаю:

UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-5: ordinal not in range(256)

В общем решением для себя на данный момент будет собственный декодер, может быть это и не совсем простое решение, но по крайней мере оно работает)

PS Вы правильно меня поняли, задача была, любым образом получить в консоли русские символы, а не закодированную строку на выходе.
0
Любознательный
 Аватар для YuS_2
7406 / 2260 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
12.07.2023, 15:16
Цитата Сообщение от Satain Посмотреть сообщение
если в ваше решение в строку s поставить мою строку, то я получаю
Вопрос в том, ещё раз, какую именно строку Вы получаете и каким образом... от этого и будет зависеть то или иное решение.
Если речь об этой строке:
Цитата Сообщение от Satain Посмотреть сообщение
\u0414\u043e\u0431\u0440\u044b\u0439 \u0434\u0435\u043d\u044c
то это закодированный юникод, в формате с префиксом "\u"+ 4-6 символов кодировки юникода... такой набор в интерактивной консоли будет раскодирован автоматически, т.е. ввод строки:
'\u0414\u043e\u0431\u0440\u044b\u0439 \u0434\u0435\u043d\u044c'
приведет к автоматическому декодированию и выводу строки:
'Добрый день'

Если же речь об этой строке:
Цитата Сообщение от Satain Посмотреть сообщение
'\\xed\\xe5 \\xff?xb\\xff\\xe5\\xf2\\xf1\\xff \\xef\\xf0\\xe8\\xeb\\xee\\xe6\\xe5\\xed \\xe8\\xe5\\xec'
то это байтовая строка (с ошибочным набором символов), которая для декодирования должна иметь вид:
Python
1
b'\xed\xe5 \xff?xb\xff\xe5\xf2\xf1\xff \xef\xf0\xe8\xeb\xee\xe6\xe5\xed\xe8\xe5\xec'
- в этом случае, можно её декодировать так:
Python
1
b'\xed\xe5 \xff?xb\xff\xe5\xf2\xf1\xff \xef\xf0\xe8\xeb\xee\xe6\xe5\xed\xe8\xe5\xec'.decode('cp1251')
В общем, разберитесь, что откуда и в каком виде получаете, тогда и проблему будет решать проще...

Цитата Сообщение от Satain Посмотреть сообщение
похоже я совершенно не понимаю логику .encode.decode
для этого есть документация, почитайте, как работают эти методы...
в двух словах:
.encode() - возвращает байтовую строку в определенной кодировке
.decode() - возвращает строку из заданных байтов в определенной кодировке
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.07.2023, 15:16
Помогаю со студенческими работами здесь

Декодирование hex и ascii
Добрый день! Получаю с весов по com порту RS232 данные...

Декодирование зашифрованной информации
Текст сначала перевели в ASCII код (основной текст и ключ), а затем сделали побитовую операцию XOR. После этого перевели обратно в символы....

Кодирование / декодирование текста
подскажите пожалуйста какой - то алгоритм(c открытым ключом ) с помощью которого можно кодировать/декодировать сообщения на русском то AES...

Декодирование данных после нормализации
Я делаю нормализацию данных: from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() train_data =...

Кодирование/декодирование данных шифром Цезаря
Здравствуйте! Помогите, пожалуйста, с решением одной любой из следующих задач! Программирование у меня не профилирующий предмет, и я в нём...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru