我不明白,为什么解码失败,如果字节字符串以十六进制a、b、c、d、e或f开头,而不是一个数字,那么总是有两个反斜杠而不是一个。你知道吗
>>> bstr = b'\xfb'
>>> bstr.decode('utf8', 'backslashreplace')
'\\xfb'
我想要的是“\xfb”。你知道吗
但是
>>> bstr = b'\x1f'
>>> bstr.decode('utf8', 'backslashreplace')
'\x1f'
按预期工作。你知道怎么了吗?你知道吗
Tags:
b'\xfb'
是包含单个字节的bytestring。该字节具有十六进制值FB,或十进制的251。你知道吗'\xfb'
是包含单个Unicode代码点的字符串。这个代码点是U+00FB拉丁文小写字母U和扬抑符,或者û
。你知道吗b'\xfb'
不是'\xfb'
的UTF-8编码。'\xfb'
的UTF-8编码是b'\xc3\xbb'
:实际上,
b'\xfb'
根本不是任何东西的UTF-8编码,尝试将其解码为UTF-8是一个错误。'backslashreplace'
指定处理该错误的方法,其中FB字节替换为字符序列反斜杠-x-f-b虽然可以将
b'\xfb'
转换成'\xfb'
,但这种转换与UTF-8没有任何关系,在没有明确需求的情况下应用这种转换只会导致更多的问题。你需要弄清楚你的程序实际上需要做什么。最有可能的是,正确的前进道路不涉及任何b'\xfb'
到'\xfb'
的转换。我们不知道你需要做什么,因为我们错过了太多的背景。你知道吗相关问题 更多 >
编程相关推荐