如何在python 3中解码utf-8编码的字符串?

时间:2019-07-10 23:36:56

标签: django python-3.x

我有以下情况:

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

我需要将其转换为字符串,因为Django的set_cookie()需要一个字符串,而我似乎无法为其编写函数decode_string

decode_string(encoded_string) == 'дис'

再次出现。如果我不转换此字符串,则django返回内部服务器错误。 你能帮忙吗?

更新:

我希望我可以避免执行str()步骤,但这不取决于我。 Django的set_cookie将字节字符串转换为str。

2 个答案:

答案 0 :(得分:0)

不要使用str(),而要使用decode

>>> 'дис' == 'дис'.encode('utf-8').decode('utf-8')
True

答案 1 :(得分:0)

嗯,如果我使用'дис'.encode('unicode-escape'),那么

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

是一种解决方案,但对我来说看起来很混乱。