我有一个字节字符串,正在使用.decode('unicode-escape')
解码为python中的unicode。这将返回一个unicode字符串。对该unicode字符串进行编码以再次以字节形式获取它,但是会返回不同的字节字符串。为什么会这样,以及如何以保留原始数据的方式进行解码和编码?
例子:
some_bytes = b'7Q\x82\xacqo\xbb\x0f\x03\x105\x93<\xebD\xbe\xde\xad\x82\xf9\xa6\x1cX\x01N\x8c\xff\x9e\x84\x1e\xa1\x97'
some_bytes.decode('unicode-escape')
产量:
7Q¬qo»5<ëD¾Þù¦XNÿ¡
some_bytes.decode('unicode-escape').encode()
产量:
b'7Q\xc2\x82\xc2\xacqo\xc2\xbb\x0f\x03\x105\xc2\x93<\xc3\xabD\xc2\xbe\xc3\x9e\xc2\xad\xc2\x82\xc3\xb9\xc2\xa6\x1cX\x01N\xc2\x8c\xc3\xbf\xc2\x9e\xc2\x84\x1e\xc2\xa1\xc2\x97'
最佳答案
xc2,xc3在utf-8中表示00。例如:对于电源2,utf-8是\ xc2 \ xb2
因此,在编码时,将其添加到每个代码点之前。
有关更多详细信息,请参见下面的链接
https://www.utf8-chartable.de/unicode-utf8-table.pl?start=128&number=128&utf8=string-literal&unicodeinhtml=hex