【发布时间】:2020-01-25 02:21:29
【问题描述】:
给定一个字节字符串,例如B = b"\x81\xc9\x00\x07I ABCD_\xe2\x86\x97_",我希望能够将其转换为尽可能为 UTF-8 的有效可打印 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 字符与无效字符一起转义。
【问题讨论】:
标签: python unicode escaping invalid-characters