Python编解码器安全编码方法

Python编解码器安全编码方法,python,unicode,escaping,invalid-characters,Python,Unicode,Escaping,Invalid Characters,给定一个字节字符串,例如B=B“\x81\xc9\x00\x07I ABCD\uxe2\x86\x97”我希望能够将其转换为尽可能多的有效可打印UTF-8字符串:S=“\\x81\\xc9\\x00\\x07I ABCD_↗_"。请注意,第一组十六进制字节不是有效的UTF-8字符,但最后3组确实定义了一个有效的UTF-8字符(箭头)。这似乎应该是编解码器的一部分,但我不知道如何实现这一点 比如说 >>> codecs.decode(codecs.escape_encode(B,

给定一个字节字符串,例如
B=B“\x81\xc9\x00\x07I ABCD\uxe2\x86\x97”
我希望能够将其转换为尽可能多的有效可打印UTF-8字符串:
S=“\\x81\\xc9\\x00\\x07I ABCD_↗_"
。请注意,第一组十六进制字节不是有效的UTF-8字符,但最后3组确实定义了一个有效的UTF-8字符(箭头)。这似乎应该是编解码器的一部分,但我不知道如何实现这一点

比如说

>>> codecs.decode(codecs.escape_encode(B, 'utf-8')[0], 'utf-8')
'\\x81\\xc9\\x00\\x07I\\x19ABCD_\\xe2\\x86\\x97_'

将有效的UTF-8字符与无效字符一起转义。

在解码bytestring时指定
'backslashreplace'
作为错误处理模式,将用反斜杠转义序列替换不可解码的字节:

decoded = b.decode('utf-8', errors='backslashreplace')

此外,这是一个解码操作,而不是编码操作。解码是字节->字符串。编码是字符串->字节。

在解码bytestring时指定
'backslashreplace'
作为错误处理模式,将用反斜杠转义序列替换不可解码的字节:

decoded = b.decode('utf-8', errors='backslashreplace')
另外,这是一个解码操作,而不是编码操作。解码是字节->字符串。编码是字符串->字节