为什么下面两个命令的输出不同?

$ 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/

10-13 07:40