升华文本3、Python 3和UTF-8 don';我不喜欢彼此
我正在尝试使用在Sublime文本中运行的Python脚本解析HTML页面。此页包含非ASCII字符。我一直得到升华文本3、Python 3和UTF-8 don';我不喜欢彼此,python,utf-8,sublimetext3,Python,Utf 8,Sublimetext3,我正在尝试使用在Sublime文本中运行的Python脚本解析HTML页面。此页包含非ASCII字符。我一直得到[解码错误-输出不是utf-8],所以我做了一些调查,得出了这个有趣的代码片段: import codecs #print((1, codecs.decode(codecs.encode('ò', 'utf-8'), 'utf-8'))) print('ò') 打印[解码错误-输出不是utf-8]。如果对ASCII字符进行编码,则不会发生此错误。这不是一个编译错误-程序运行并完成-
[解码错误-输出不是utf-8]
,所以我做了一些调查,得出了这个有趣的代码片段:
import codecs
#print((1, codecs.decode(codecs.encode('ò', 'utf-8'), 'utf-8')))
print('ò')
打印
[解码错误-输出不是utf-8]
。如果对ASCII字符进行编码,则不会发生此错误。这不是一个编译错误-程序运行并完成-所以我怀疑这是升华文本处理脚本输出的问题,但我不能进一步缩小它的范围。我如何做到这一点?我对python 3.4和Sublime Text 2也有同样的问题。即使明确说明代码的编码(在文件的第一行使用#--coding:UTF-8)也没有帮助。我也尝试过显式地对有问题的字符串进行编码,但没有效果
这似乎是一个非常严重的内部问题/错误,因为我也尝试过用相同的结果对有问题的部分的源文档进行编码(在记事本++中编码为UTF-8,没有BOM)
虽然我不知道如何修复Sublime 2/3中的问题,但我只能提供workaround==>use CMD/PowerShell,它可以非常好地为我提供正确的输出
PS:我希望这能有所帮助,但请注意,我既不是一名经验丰富的程序员,也不是python或sublime的渊博知识。我只想贡献我的2美分。继续,打开命令提示符并键入:
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"
}
这应该可以解决问题