gpt4 book ai didi

python - 从非 ascii 字符串解码 Python 3 中的转义 unicode

转载 作者:行者123 更新时间:2023-11-28 22:42:59 32 4
gpt4 key购买 nike

我已经搜索了几个小时,以找到一种方法来完全反转 str.encode 调用的结果,如下所示:

"testäch基er".encode("cp1252", "backslashreplace")

结果是

b'test\xe4ch\\u57faer'

现在我想把它转换回来

b'test\xe4ch\\u57faer'.decode("cp1252")

我明白了

'testäch\\u57faer'

那我怎么找回我的基呢?我通过使用 decode("unicode-escape") 而接近那里(它适用于这个例子),但是假设字节是用 iso8859-1 而不是 cp1252 编码的,所以 80 到 9F 之间的任何字符都是错误的。

最佳答案

嗯...

>>> b'test\xe4ch\\u57faer'.decode('unicode-escape')
'testäch基er'

但是 backslashreplace-unicode-escape 不是一致的往返。如果原始字符串中有反斜杠,它们不会被 backslashreplace 编码,但它们会被 unicode-escape 解码,并替换为意外字符。

>>> '☃ \\u2603'.encode('cp1252', 'backslashreplace').decode('unicode-escape')
'☃ ☃'

对于使用 errors 回退(例如 backslashreplace)编码的字符串,无法可靠地对其进行反向编码。这就是为什么它是后备的原因,如果您可以始终如一地对其进行编码和解码,那将是真正的编码

关于python - 从非 ascii 字符串解码 Python 3 中的转义 unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31327170/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com