为什么下面两个命令的输出不同?
$ 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 - python 2 和 3 对于 utf-8 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52635363/