Как закодировать Юникод в байты, чтобы можно было получить исходную строку? в питоне 3.11Python

Программы на Python
Anonymous
Как закодировать Юникод в байты, чтобы можно было получить исходную строку? в питоне 3.11

Сообщение Anonymous »

В Python 3.11 мы можем закодировать строку следующим образом:
string.encode('ascii', 'backslashreplace')
Это прекрасно работает например: hellö => hell\\xf6
Однако, когда я вставляю hellö w\\xf6rld, я получаю hell\\xf6 w\ \xf6rld
(обратите внимание, что у второго есть литеральная часть, которая выглядит как управляющая последовательность символов)
Или, другими словами, выполняется следующее:

Код: Выделить всё

'hellö wörld'.encode('ascii', 'backslashreplace') == 'hellö w\\xf6rld'.encode('ascii', 'backslashreplace')
Это, очевидно, означает, что данные были потеряны при кодировании.
Есть ли способ заставить Python действительно правильно кодировать? Значит, обратная косая черта экранируется сама по себе? Или библиотека для этого?

Подробнее здесь: https://stackoverflow.com/questions/787 ... trieved-in

Вернуться в «Python»