【发布时间】:2017-01-27 07:52:59
【问题描述】:
我有这个 Python3 代码尝试从 utf-8 编码文件读取和打印:
f = open('mybook.txt', encoding='utf-8')
for line in f:
print(line)
当我使用 Sublime Text 3 构建时,出现以下错误:
UnicodeEncodeError: 'ascii' codec can't encode character '\u2019' in position 18: ordinal not in range(128)
但是,当我使用 python3 在终端中执行我的代码时,它可以工作文件。
我的构建配置是
{
"cmd": ["/usr/local/bin/python3", "$file"]
, "selector": "source.python"
, "file_regex": "file \"(...*?)\", line ([0-9]+)"
}
如果我将其更改为:
f = open('mybook.txt', encoding='utf-8')
for line in f:
print(line.encode('utf-8'))
然后它会打印 utf-8 编码的字节字符串(我认为这是正在发生的事情)。
b'Hello\n'
b'\xc2\xab\xe2\x80\xa2\n'
b'Goodbye'
但我也不知道如何从这里开始在屏幕上打印 unicode 字符...
另外,如果我尝试按照A python program fails to execute in sublime text 3, but success in bash 更改此环境变量,它仍然无法修复它。
【问题讨论】:
-
试试
print(line.decode()) -
SublimeText 输出设备似乎只处理 ASCII ......检查 SublimeText 选项,看看你是否可以做点什么。
-
decode 不是字符串中的方法。我已经在上面更新了一些信息。
-
我仍然相信这是一个 Sublime Text 问题:它告诉 python 解释器使用 ASCII 来显示输出。要解决这个问题,你应该找到 SublimeText 终端的配置并在那里选择编码,或者正确设置环境变量。
-
我也这么认为——只是还没有找到它,所以我希望周围有一些崇高的文字忍者:)
标签: python python-3.x utf-8 sublimetext3 sublimetext