【问题标题】:Lexical error: Encountered: "" (0), after : ""词法错误:遇到:“”(0),之后:“”
【发布时间】:2011-06-28 11:24:40
【问题描述】:

我需要开始处理外来字符,而这样做,我想我彻底搞砸了文件的编码。

我得到的错误是:

Lexical error at line 1, column 8.  Encountered: "" (0), after :  ""

文件的第一行是:

import xml.etree.cElementTree as ET

另外注意:当我将上面的行粘贴到 textarea 中以提出这个问题并提交时,每个字符之间出现了一个未知字符(e 我无法通过添加显式编码定义来解决此问题:

# -*- coding: utf-8 -*-

我也无法将文件(使用 Hg)恢复到以前的版本,也无法将代码复制/粘贴到新文件中,或者用复制/粘贴的代码替换损坏的文件。

请帮忙!

【问题讨论】:

    标签: python lexical


    【解决方案1】:

    如果其中确实是一个零字符,您可能会发现您已经注入了一些 UTF-16/UCS-2 文本。该特定的 Unicode 编码在每个 ASCII 字符之间会有一个零字节。

    找出答案的最佳方法是使用od -xcb myfile.py 之类的内容对您的文件进行十六进制转储。

    如果 是这种情况,那么您需要使用能够看到这些字符的东西来编辑文件,然后修复它们。

    vi 将是我的第一选择(因为我已经习惯了),但我不想与 Emacs 光明会开始任何圣战。在vi 中,它们很可能会显示为^@ 字符。

    【讨论】:

    • 谢谢!该文件在每个 ASCII 字符之间确实有零字节。 0000000 6d69 6f70 7472 0020 0078 006d 006c 002e i m p o r t \0 x \0 m \0 l \0 . \0 151 155 160 157 162 164 040 000 170 000 155 000 154 000 056 000 。我该如何删除这些?我正在使用 Eclipse。
    • 完美。使用 vi 并且必须在 ^@ 上搜索/替换
    猜你喜欢
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多