我遇到了 Python2 和 Python3 之间的奇怪区别。当使用 Python3 打印时,打印相同的字符列表会产生一个额外的字节 C2。我会期待同样的行为。 Python2 的行为符合我的预期。我在这里缺少什么?
$ python3 -c "print('\x30\xA0\x04\x08')" | xxd
0000000: 30c2 a004 080a
$ python2 -c "print('\x30\xA0\x04\x08')" | xxd
0000000: 30a0 0408 0a
最佳答案
Python 3 字符串是 unicode,在您的平台上,unicode 是使用 UTF-8 编码打印的。 unicode字符U+00A0的UTF-8编码是0xC2 0xA0,这就是你看到的。
Python 2 字符串是字节串,所以它们是准确输出的。
关于Python3 在打印十六进制值时添加了额外的字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28429062/