Python. Конвертировать кодировку в раскодированный текст
Ситуация требует кодировать и декодировать текст, записанный, например, в 'utf-16' кодировке путём написания декодируемого текста в input
Результат программы должен выглядеть так:
Ваш текст: b'\xff\xfeB\x04'
Раскодированный текст: т
Код сейчас:
input_txt = input('Ваш текст: ')
x = input_txt.decode()
y = x.decode(encoding='utf-16',errors='ignore')
print('\nРаскодированный текст: ' + str(y))
К сожалению, это не работает корректно
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
При вводе b'\xff\xfeB\x04' через input фактически получается такая строка: "b'\\xff\\xfeB\\x04'". Перед декодированием ее нужно разобрать ее как литерал (т.е. перевести в набор байт b'\xff\xfeB\x04' в данном случае). Для этого можно использовать функцию ast.literal_eval:
import ast
input_txt = input('Ваш текст: ')
print(repr(input_txt)) # "b'\\xff\\xfeB\\x04'"
x = ast.literal_eval(input_txt)
print(repr(x)) # b'\xff\xfeB\x04'
y = x.decode(encoding='utf-16',errors='ignore')
print('\nРаскодированный текст: ' + y)