【发布时间】:2019-02-19 21:53:38
【问题描述】:
我想不通,为什么解码失败,如果字节字符串以十六进制 a、b、c、d、e 或 f 开头,而不是数字,总是有两个反斜杠而不是一个。
>>> bstr = b'\xfb'
>>> bstr.decode('utf8', 'backslashreplace')
'\\xfb'
我想要的是 '\xfb'。
但是,
>>> bstr = b'\x1f'
>>> bstr.decode('utf8', 'backslashreplace')
'\x1f'
按预期工作。你知道怎么回事吗?
【问题讨论】:
-
b'\xfb'不是'\xfb'的UTF-8 编码。以 UTF-8 解码该字节串不应导致'\xfb'。您处理编码的方式根本错误。 -
请问,如何解码字节串得到预期的结果?
-
您的期望是错误的。你可以做一件会得到你期望的结果的事情,但这样做很可能是错误的。你需要弄清楚自己应该做什么,即使事实证明你应该做的事情并没有产生你目前期望的结果。
标签: python python-3.x utf-8