Kai*_*Kai 5 python python-2.x python-3.x
我遇到了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
Run Code Online (Sandbox Code Playgroud)
Python 3字符串是unicode,在您的平台上,unicode使用UTF-8编码打印.unicode字符U + 00A0的UTF-8编码是0xC2 0xA0,这是你看到的.
Python 2字符串是字节串,因此它们是完全输出的.
在Python 3中,所有字符串文字都是unicode.
\A0转换为UTF-8是no-break space:
U+00A0无中断空间(HTML · )可以用UTF-8编码为C2 A0
试试这个:
$ python3 -c "import sys; sys.stdout.buffer.write(b'\x30\xA0\x04\x08')" | xxd
0000000: 30a0 0408 0...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
760 次 |
| 最近记录: |