python程序无法在崇高文本3中执行,但在bash中成功

时间:2015-12-16 02:18:01

标签: python bash sublimetext3

#-*- 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中的$LANGen_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.pypython -u test.py正确运行:

$ python test.py 
<type 'unicode'>
我们的世界充满了未知数。
我们的世界充满了未知数。
$ python -u test.py 
<type 'unicode'>
我们的世界充满了未知数。
我们的世界充满了未知数。

这让我很奇怪。 有没有办法正确运行sublime文本中的程序?

  • sublime和bash的环境有什么区别吗?
  • 为什么sublime文本中的输出是无序的?

1 个答案:

答案 0 :(得分:2)

Sublime存在配置问题。当Python无法确定终端编码时,它会使用默认的ascii编解码器。它正在bash中正确地计算出来,所以它有效。

如果在启动sublime之前设置环境变量set PYTHONIOENCODING=utf8,则可以强制Python在打印时使用该编码。我不熟悉sublime所以我不能建议如何修复它的配置。