从非ASCII字符串解码Python3中的转义Unicode
问题描述
我现在已经寻找了几个小时,以找到一种方法来完全逆转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字符进行编码,请查看quote
和unquote
模块中的quote
和unquote
函数。
相关文章