2011-05-31 100 views
8

我有一个包含长字符串HTML的python文件。当我编译&运行此文件/脚本,我得到这个错误:编译语法错误:字符串中的非ASCII字母

_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_ 

我已经按照指示进行去了URL建议。但是,把这样的事情在我的脚本的顶部仍然不工作:

#!/usr/bin/python 
# -*- coding: latin-1 -*- 

你觉得我能做些什么,从存在的制止这种编译器错误?

+0

也许你应该使用UTF编码(而不是拉丁语)的顶部这些行...? – phynfo 2011-05-31 05:30:59

回答

0

如果你的文件真的是latin-1,一个简单的解决方法是改变html字符串的表示形式。

据我所知:

\x92 => 146 in decimal => Æ => Æ 

如果你的性格是不是AE,那么你的文件不被编码为Latin-1的;-)(你可能想检查是否UTF-8/cp1292工作得更好作为一个快速win)

编辑: 当然,你想在尝试之前检查你的ACTUAL文件编码。我可能是错的,在Iso8859-1中不是100%肯定是×:根据这个page,它似乎没有定义。

3

它必须位于具有非ASCII文本的脚本的顶部,并且它必须与文件的实际编码匹配。 \x92是CP1252,不是Latin-1。

1

编码声明表明您认为该文件采用拉丁-1编码,但python解释器发现在GlobalVars.py中的2509行或非常接近2509的字符不是您认为的那样。

您应该首先确认GlobalVars.py的编码。它真的是拉丁文1吗?

接下来,你应该检查2509行附近的字符。他们是拉丁-1还是他们从网页或其他地方剪切和粘贴(也许有UTF-8字符混淆在那里)?

如果您的源文件中包含的字符与您的想法不符,那么在继续之前,您可能需要clean up the file

8

首先,为了防止像问题中指定的问题,您不应使用有史以来对于python源代码使用其他编码而不是utf-8

这是正确的标题使用

#! /usr/bin/env python 
# -*- coding: utf-8 -*- 

现在,你必须从任何编码,你可能不得不utf-8转换文件,可能是你目前的文本编辑器是能够做到这一点。

如果您想知道为什么我这么说,请记住文本编辑器不可能安全地猜出您的非Unicode编码,因为没有非Unicode的BOM。出于这个原因,即使编码没有被指定,大部分体面的编辑者都使用UTF-8作为默认值。顺便说一句,python文件头中指定的编码仅适用于Python,大多数编辑器会忽略您在那里编写的内容。另外,正如你所看到的,Python试图使用ASCII(而不是latin-1)解码128以上的字符,这应该会失败。我不确定为什么发生这种情况,但我甚至不在乎,因为解决问题有更好的方法。

3

如果你只是关心摆脱这种错误的没有进入它的细节(你可以从这个页面上的其他答案得到),你可以做以下 -

1)复制您的代码并将其粘贴到记事本+ +

2)选择编码 - >编码为UTF-8

3)选择查看 - >显示符号 - >显示所有字符

现在,这将是你可见哪个符号导致问题(x92会可见)。更换/删除它来解决问题。

2

发现这一点,并希望它有助于旁边的人: http://www.sitepoint.com/forums/showthread.php?567734-Anyone-know-what-this-error-means

Code point 0x92 (146 decimal) is the right single quotation mark, or apostrophe (’) in Windows-1252. It's an invalid character in ISO 8859 and in UTF-8, since the 0x80-0x9F range is reserved for C1 control characters.

不知道如果我破坏版权。如果是这样,请删除blockquote。

+0

当我从python.org复制一些文本作为我的代码中的注释时,我得到了同样的错误。该文本有一个撇号(而不是Windows版本),这是造成这种情况。我删除了撇号,并使用它的Windows版本。错误消失了。 – user3885927 2014-09-12 20:58:08

1

添加您的代码

#! /usr/bin/env python 
# -*- coding: utf-8 -*-