为什么下面两个命令的输出不同?
$ python2.7 -c 'print("\303\251")'
é # <-- Great
$ python3.6 -c 'print("\303\251")'
é # <-- WTF?!
从“\303\251”输出“é”的python3命令是什么?
谨致问候,
奥利维尔
最佳答案
在Python 2上,您告诉Python打印两个字节。它打印两个字节。您的终端将这两个字节解释为é
的编码并显示é
。(看起来您的终端正在使用UTF8。)
在Python 3上,您告诉Python使用Unicode代码点0o303和0o251(八进制)打印这两个字符。这些字符是é
。Python以系统相关编码(可能是UTF8)对这些字符进行编码,并将得到的字节写入stdout。然后,终端解码字节并显示é
。
如果你想让Python 3打印é
,给它一个Unicode代码点(\u00e9
),或者告诉它打印é
:
$ python3.6 -c 'print("é")'
é
关于python - utf-8的python 2和python 3之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52635363/