我有一个字节字符串,正在使用.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

10-01 06:34