从非ASCII字符串解码Python3中的转义Unicode

2022-04-11 00:00:00 python unicode escaping encoding decode

问题描述

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

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

结果为

b'testxe4ch\u57faer'

现在我想用

将其转换回来
b'testxe4ch\u57faer'.decode("cp1252")

我得到

'testäch\u57faer'

那么我如何取回我的基?我通过使用decode("unicode-ESCRIPE")来实现这一点(它在本例中可以使用),但这假设使用is8859-1而不是cp1252编码的字节,因此介于80和9F之间的任何字符都是错误的。


解决方案

当我问这个问题时,我还是个新手。现在我明白了,这些后备机制只是用于处理意外错误,而不是用于保存和恢复数据。如果您确实需要一种简单可靠的方法来在ASCII中对单个Unicode字符进行编码,请查看quoteunquote模块中的quoteunquote函数。

相关文章