我正在阅读 SO 上关于 Unicode 的高评分帖子。
这里有一个在帖子中给出的示例:
我对第一个结果得到了与上面描述不同的结果。为什么会有这种差异?`latin-1` 又在这个过程中扮演了什么角色?
这里有一个在帖子中给出的示例:
$ python
>>> import sys
>>> print sys.stdout.encoding
UTF-8
>>> print '\xe9' # (1)
é
>>> print u'\xe9' # (2)
é
>>> print u'\xe9'.encode('latin-1') # (3)
é
>>>
并且解释如下:
(1) Python输出二进制字符串,终端接收到后会尝试使用Latin-1字符映射来匹配其值。在Latin-1中,0xe9或233表示字符“é”,因此这就是终端显示的内容。
我的问题是:当编码为'UTF-8'时,为什么终端要匹配Latin-1字符映射?
当我尝试运行以下命令时:
>>> print '\xe9'
?
>>> print u'\xe9'
é
我对第一个结果得到了与上面描述不同的结果。为什么会有这种差异?`latin-1` 又在这个过程中扮演了什么角色?
sys.stdout.encoding
的值。 - Martijn Pieters