【问题标题】:Python BOM error in Ascii fileAscii 文件中的 Python BOM 错误
【发布时间】:2011-02-13 07:53:54
【问题描述】:

Python 2.6 有一个奇怪而烦人的问题。我试图在我的嵌入式 Linux ARM 板上运行这个文件(和另一个)。 http://svn.tuxisalive.com/software_suite_v3/smart-core/smart-server/trunk/TDSService.py

我收到此错误:

文件“tuxhttpserver.py”,第 1 行 SyntaxError:编码问题:使用 物料清单

我知道错误与 BOM 字节等有关。但是,没有 BOM 字节,它是纯 Ascii。我用 Hexeditor 进行了检查,linux 文件命令显示它的 Ascii。

我吓坏了...代码在我的 Sheevaplug(也是基于 ARM 的系统)上运行良好。

【问题讨论】:

    标签: python encoding ascii byte-order-mark


    【解决方案1】:

    不要太拘泥于“with 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,则没有区别。如果我删除该行,我会得到相同的错误,但在“导入版本”行中。
    • 那么我猜你运行的 Python 安装没有任何编码。您在“导入版本”行收到错误的事实可能意味着“版本”模块也有一个编码头。我会花一些时间让至少 一些 编码在这个 Python 安装上工作。
    • 这似乎不再是最近 Python 版本的正确答案(因为此处作为示例给出的特定编码标头现在报告 SyntaxError: encoding problem: asdfasdfasdf, 没有 BOM 声明)。仅当编码标头未拼出 utf-8 但存在 UTF-8 BOM 时,才会出现错误消息。
    猜你喜欢
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 2015-09-22
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    相关资源
    最近更新 更多