代码之家  ›  专栏  ›  技术社区  ›  Cristian

解码utf-16字符串时出错

  •  1
  • Cristian  · 技术社区  · 8 年前

    我正在使用 python3.3 。我一直在尝试解码如下所示的某个字符串:

    b'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03\xed:\xf9w\xdaH\xd2?\xcf\xbc....
    

    继续。但是每当我尝试使用 str.decode('utf-16') 我收到一个错误消息:

    'utf16' codec can't decode bytes in position 54-55: illegal UTF-16 surrogate
    

    我不太清楚如何解码这个字符串。

    1 回复  |  直到 8 年前
        1
  •  3
  •   unutbu    8 年前

    gzipped数据 begins with \x1f\x8b\x08 所以我猜您的数据是gzipped的。尝试 gunzipping the data 解码之前。

    import io
    import gzip
    
    # this raises IOError because `buf` is incomplete. It may work if you supply the complete buf
    buf = b'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03\xed:\xf9w\xdaH\xd2?\xcf\xbc'
    with gzip.GzipFile(fileobj=io.BytesIO(buf)) as f:
        content = f.read()
        print(content.decode('utf-16'))