Python在Ascii文件中出现BOM错误

5
我有一个关于Python 2.6的奇怪而烦人的问题。我正在尝试在我的嵌入式Linux ARM板上运行这个文件(和其他文件)。 http://svn.tuxisalive.com/software_suite_v3/smart-core/smart-server/trunk/TDSService.py 我收到以下错误:

File "tuxhttpserver.py", line 1 SyntaxError: encoding problem: with BOM

我知道这个错误与BOM字节等有关。但是,没有BOM字节,它是纯Ascii格式。我用十六进制编辑器检查了一下,并且Linux File命令显示它是Ascii格式。
我很担心... 这段代码在我的Sheevaplug(也是基于ARM的系统)上可以正常工作。
1个回答

10

不要过于关注“带BOM”备注。这可能并不重要。这个错误通常意味着你尝试运行的 Python 版本不支持你声明的编码方式。请注意:

% head -1 tmp.py
# -*- coding: asdfasdfasdf -*-
% python tmp.py
  File "tmp.py", line 1
SyntaxError: encoding problem: with BOM

你正在运行在该嵌入式Linux ARM板上的Python安装版本可能不支持 'latin-1' 编码。由于源文件中没有任何非ASCII字符,因此只需将编码声明为 'ascii',或者完全省略编码。


如果我将Latin1更改为ascii,没有任何区别。 如果我删除该行,我会得到相同的错误,但是在“导入版本”行中。 - Sugarel
2
那我猜你运行的 Python 安装根本没有任何编码。你在“import version”行上出现错误的事实可能意味着“version”模块也有一个编码头。我建议你花一些时间让至少某些编码能够在这个 Python 安装上工作。 - Thomas Wouters
这似乎已经不再是最新Python版本的正确答案了(因为在此处提供的特定编码头现在报告“SyntaxError:encoding problem:asdfasdfasdf”,没有 BOM声明)。仅当编码标头未明确指出utf-8但存在UTF-8 BOM时,才会出现错误消息。 - Martijn Pieters

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