让我扩展一下Ignacio的回答:在这两种情况下,Python和您之间都有一个额外的层:一种情况是 Sublime Text ,另一种情况是cmd.exe
。您看到的行为差异不是由于Python引起的,而是由于 Sublime Text (看起来是utf-8)和cmd.exe
(cp437)使用的不同编码。
因此,当您输入时ñ
, Sublime Text 发送'\xc3\xb1'
到Python,而cmd.exe
sends发送\xa4
。[我只是在这里讨价还价,省略了与问题无关的细节。]
不过,Python知道这一点。从cmd.exe
您可能会得到类似:
>>> import sys
>>> sys.stdin.encoding
'cp437'
而在 Sublime Text中, 您会得到类似
>>> import sys
>>> sys.stdin.encoding
'utf-8'