Mac*_*ack 8 python unicode ascii compiler-errors
我有一个python文件,其中包含一长串HTML.当我编译并运行此文件/脚本时,我收到此错误:
_SyntaxError: Non-ASCII character '\x92' in file C:\Users...\GlobalVars.py on line 2509, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details_
Run Code Online (Sandbox Code Playgroud)
我已按照说明进入建议的网址.但是在我的脚本顶部放置这样的东西仍然不起作用:
#!/usr/bin/python
# -*- coding: latin-1 -*-
Run Code Online (Sandbox Code Playgroud)
您认为我可以做些什么来阻止此编译器错误的发生?
首先,为了防止类似的问题所指定的一个问题,你不应该永远使用其他的编码比utf-8Python的源代码.
这是要使用的正确标头
#! /usr/bin/env python
# -*- coding: utf-8 -*-
Run Code Online (Sandbox Code Playgroud)
现在你必须从你可能拥有的任何编码转换文件utf-8,可能你当前的文本编辑器能够做到这一点.
如果你想知道我为什么这么说,请记住,文本编辑器不可能安全地猜测你的非unicode编码,因为非unicode没有BOM.出于这个原因,即使没有指定编码,大多数体面的编辑器都使用UTF-8作为默认值.而BTW,python文件头中指定的编码仅适用于Python,大多数编辑忽略了你在那里写的内容.
另外,正如您所看到的,Python正在尝试使用ASCII(非latin-1)解码128以上的字符,这应该会失败.我不确定为什么会这样,但我甚至不在乎,因为有更好的方法来解决问题.
如果您的文件确实是 latin-1 格式,一个简单的解决方案是更改 html 字符串及其表示形式。
\n\nAFAIK:
\n\n\\x92 => 146 in decimal => \xc3\x86 => Æ\nRun Code Online (Sandbox Code Playgroud)\n\n如果您的字符不是 \xc3\x86,那么您的文件不会编码为 latin-1 ;-) (并且您可能想检查 utf-8/cp1292 是否能更好地工作作为快速胜利)
\n\n编辑:\n当然,您需要在尝试之前检查实际的文件编码。我可能是错的,不是 100% 确定 \\x92 是 Iso8859-1 中的 \xc3\x86 :根据此页面,它似乎没有定义。
\n| 归档时间: |
|
| 查看次数: |
8633 次 |
| 最近记录: |