错误:字节"239"不是(7位)ASCII字符集的成员

use*_*715 1 java netbeans

我想在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);
Run Code Online (Sandbox Code Playgroud)

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

xml标题是:

<?xml version="1.0" encoding="us-ascii"?>
Run Code Online (Sandbox Code Playgroud)

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

Chr*_*röm 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的假设是正确的情况下才有效.