在emacs中(使用run-python
命令调用python3
):
>>> sys.version
sys.version
'3.2.3 (v3.2.3:3d0686d90f55, Apr 10 2012, 11:25:50) \n[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]'
>>> sys.getdefaultencoding()
sys.getdefaultencoding()
'utf-8'
>>> data
data
'sp\xe4m'
>>> print(data)
print(data)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character '\xe4' in position 2: ordinal not in range(128)
终端内:
^{pr2}$有人知道Python的unicode字符串在终端而不是emacs中工作的原因吗
(emacs的版本信息:GNU Emacs 24.2.1 (x86_64-apple-darwin, NS apple-appkit-1038.36) of 2012-08-27 on bob.porkrind.org
)
sys.getdefaultencoding()
的值与正在执行的stdout或shell无关。默认编码只是用于编码Unicode字符串的内部编码。在但是,要打印到的shell不一定具有相同的编码。您可以从
sys.stdout.encoding
获得stdout的编码。不幸的是,Python无法更改这一点,因此您必须自己找出如何更改shell编码(例如,在Windows控制台中,它是使用chcp
完成的)。在我相信这是相关的:https://emacs.stackexchange.com/a/9876/861
添加
你的
.emacs
帮我解决了这个问题。在我的Windows中的Emacs 25(在本机中为Emacs 7.1)
在初始标高设置此项:
(setenv“LANG”“en_美国UTF-8“)
相关问题 更多 >
编程相关推荐