我想在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"?>
我该怎么解决这个问题?谢谢。
2条答案
按热度按时间h7appiyu1#
您的XML文件在XML头中声称是ASCII,但实际上不是,因为它显然包含非ASCII字节。
修复程序(按优先顺序):
1.您应该找到生成XML文件的任何人,让他们生成一个新的正确的XML文件。
1.字节239或0xEF十六进制,实际上是(冗余的)UTF-8字节顺序标记(BOM)
0xEF 0xBB 0xBF
的第一个字节。我强烈怀疑某些软件错误地将其添加到XML文件的开头。例如,记事本就是如此。如果是的话,删除字节顺序标记,它是文件的前三个字节,就在
<?xml
之前。如果你的编辑器没有显示它(例如,我认为记事本没有,还有Netbeans might also have problems),找另一个会显示的。仅使用不支持UTF-8 BOM的编辑器打开并重新保存文件可能就足够了。
1.另一种解决方法是将
<?xml version="1.0" encoding="us-ascii"?>
替换为<?xml version="1.0" encoding="UTF-8"?>
。只有在我对BOM的假设是正确的情况下,这种方法才有效。k10s72fa2#
我本想在Christoffer的帖子下发表评论,但stackoverflow要求50点声望,而我没有。我使用的是macOS Big Sur。附带的vi无法识别字节239,而皮科可以。