#-*- encoding:utf-8 -*-
from __future__ import (absolute_import, division, print_function,
unicode_literals)
text = "我们的世界充满了未知数。" # Chinese
print( type(text) ) # unicode
print(text.encode('utf-8'))
print(text) # an error occurs in sublime
python的版本是2.7.6。操作系统是Linux模因17. bash中的$LANG
是en_US.UTF-8
。在崇高文本中, Ctrl + B 用于运行此玩具程序。输出是:
Traceback (most recent call last):
<type 'unicode'>
我们的世界充满了未知数。
File "~/test.py", line 9, in <module>
print(text) # an error occurs
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-11: ordinal not in range(128)
[Finished in 0.0s with exit code 1]
[shell_cmd: python -u "~/test.py"]
或
Traceback (most recent call last):
File "~/test.py", line 9, in <module>
<type 'unicode'>
我们的世界充满了未知数。
print(text) # an error occurs
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-11: ordinal not in range(128)
[Finished in 0.0s with exit code 1]
[shell_cmd: python -u "~/test.py"]
在bash中,eigher python test.py
或python -u test.py
正确运行:
$ python test.py
<type 'unicode'>
我们的世界充满了未知数。
我们的世界充满了未知数。
$ python -u test.py
<type 'unicode'>
我们的世界充满了未知数。
我们的世界充满了未知数。
这让我很奇怪。 有没有办法正确运行sublime文本中的程序?
答案 0 :(得分:2)
Sublime存在配置问题。当Python无法确定终端编码时,它会使用默认的ascii
编解码器。它正在bash
中正确地计算出来,所以它有效。
如果在启动sublime之前设置环境变量set PYTHONIOENCODING=utf8
,则可以强制Python在打印时使用该编码。我不熟悉sublime所以我不能建议如何修复它的配置。