Как декодировать строку в кодировке utf-8 в python 3? - PullRequest
0 голосов
/ 11 июля 2019

У меня следующая ситуация:

encoded_string = str('дис'.encode('utf-8'))

Мне нужно преобразовать это в строку, потому что django set_cookie() принимает строку, и я не могу написать функцию decode_string, для которой:

decode_string(encoded_string) == 'дис'

снова. Если я не конвертирую эту строку, то django возвращает внутреннюю ошибку сервера. Можете ли вы помочь?

UPDATE:

Хотел бы я избежать шага str(), но это не мое дело. Django set_cookie преобразует строки байтов в стр.

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

Хммм кажется, что если я использую 'дис'.encode('unicode-escape'), то

def decode_string(encoded_string: str) -> str:
    return bytes(encoded_string.replace('\\\\','\\')[2:-1], 'utf-8').decode('unicode-escape')

- это решение, но оно мне кажется грязным.

0 голосов
/ 11 июля 2019

Не используйте str(), используйте decode.

>>> 'дис' == 'дис'.encode('utf-8').decode('utf-8')
True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...