【问题标题】:Python codec safe_encode methodPython 编解码器 safe_encode 方法
【发布时间】: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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-01
      • 1970-01-01
      • 2015-11-06
      • 2011-06-29
      • 1970-01-01
      • 2013-08-20
      • 2013-09-09
      • 2020-07-17
      相关资源
      最近更新 更多