Sublime Text 3、Python 3和UTF-8不兼容

3

我正在尝试使用在Sublime Text中运行的Python脚本解析一个包含非ASCII字符的HTML页面。但是一直收到[Decode error - output not utf-8]的错误信息,于是我进行了一些调查,最终发现以下有趣的代码片段:

import codecs

#print((1, codecs.decode(codecs.encode('ò', 'utf-8'), 'utf-8')))
print('ò')

我在输出一个[解码错误 - 输出不是utf-8]的字符时遇到了这个问题。如果我输出一个ASCII字符,就不会出现这个错误。这不是编译错误——程序可以运行并完成——所以我怀疑这是Sublime Text处理脚本输出的问题,但我无法进一步缩小范围。我该如何解决这个问题?

2个回答

7

请打开命令提示符并输入以下内容:

c:\>chcp

检查命令的编码方式。在我的情况下,它是

Active code page: 852

现在打开 Python.sublime-build (C:\Users\User\AppData\Roaming\Sublime Text 2\Packages\User) 构建系统并添加编码:

{
    "cmd": ["c:\\python33\\python", "-u", "$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python",
    "encoding": "cp852"
} 

这应该足够了。

0

我在使用Python 3.4和Sublime Text 2时遇到了同样的问题。即使在文件的第一行明确指定了代码的编码(使用# -- coding: UTF-8 --),也没有帮助。我还尝试了显式编码有问题的字符串,但是也没有用。

这似乎是Sublime内部的问题/bug,因为我还尝试了使用相同的结果对有问题部分的源文档进行编码(在Notepad++中编码为UTF-8 without BOM)。

虽然我不知道如何在Sublime 2/3中解决问题,但我只能提供一个解决方法 ==> 使用CMD/PowerShell,这对我来说完美地解决了输出正确的问题。

PS:我希望这可以帮助到你,但请注意,我既不是经验丰富的程序员,也没有深入了解Python或Sublime。我只是想贡献我的意见。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接