1

我想在 netbeans 中读取一个 xml 文件。我使用以下代码:

DocumentBuilderFactory dbf ; DocumentBuilder db; Document doc = null;
  File file = new File(xml_url);
  dbf = DocumentBuilderFactory.newInstance();
  db = dbf.newDocumentBuilder();
  doc = db.parse(file);

然后它给出了这个错误:Byte "239" is not a member of the (7-bit) ASCII character set.

xml标头是:

<?xml version="1.0" encoding="us-ascii"?>

我怎样才能解决这个问题?谢谢。

4

2 回答 2

6

您的 XML 文件在 XML 标头中声称是 ASCII,但实际上并非如此,因为它显然包含非 ASCII 字节。

按优先顺序修复:

  1. 您应该去找任何/谁生成 XML 文件,并让它/他们生成一个新的正确 XML 文件。

  2. 字节 239 或 0xEF 十六进制,实际上是(冗余)UTF-8 字节顺序标记(BOM)的第一个字节0xEF 0xBB 0xBF。我强烈怀疑某些软件错误地将其添加到 XML 文件的开头。例如,记事本可以。

    如果是这样,请删除字节顺序标记,它是文件的前三个字节,就在<?xml. 如果您的编辑器没有显示它(例如,我认为记事本没有,而且Netbeans 也可能有问题),请找到另一个可以显示的。

    只需使用不支持 UTF-8 BOM 的编辑器打开并重新保存文件就足够了。

  3. 解决它的另一种方法是替换<?xml version="1.0" encoding="us-ascii"?><?xml version="1.0" encoding="UTF-8"?>. 这只有在我对 BOM 的假设是正确的情况下才有效。

于 2013-11-07T21:27:20.610 回答
0

我会在 Christoffer 的帖子下发表评论,但 stackoverflow 要求获得 50 个我没有的声誉。我正在使用 macOS Big Sur。vi 自带的不识别字节 239,而 pico 可以。

于 2021-10-26T12:38:36.933 回答