Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的DOM解析器不能读取UTF-8_Java_Parsing_Dom - Fatal编程技术网

Java 为什么我的DOM解析器不能读取UTF-8

Java 为什么我的DOM解析器不能读取UTF-8,java,parsing,dom,Java,Parsing,Dom,当XML文件中有UTF-8字符时,我的DOM解析器无法加载文件 现在,我知道我必须给他指示去阅读utf-8,但我不知道如何把它放在我的代码中 这是: File xmlFile = new File(fileName); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document

当XML文件中有UTF-8字符时,我的DOM解析器无法加载文件 现在,我知道我必须给他指示去阅读utf-8,但我不知道如何把它放在我的代码中 这是:

File xmlFile = new File(fileName);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlFile);
doc.getDocumentElement().normalize();

我知道有方法setencoding(),但我不知道在我的代码中放在哪里…

尝试使用Reader并提供编码作为参数:

InputStream inputStream = new FileInputStream(fileName);
documentBuilder.parse(new InputSource(new InputStreamReader(inputStream, "UTF-8")));

我用了尤金在那里做的,做了一些改变

DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();

FileInputStream in = new FileInputStream(new File("XML.xml"));
Document doc = dBuilder.parse(in, "UTF-8");

虽然如果您在eclipse控制台中打印,它将被读取为UTF-8,但除非java文件保存为“UTF-8”,否则它不会显示任何“UTF-8”字符,或者至少是我的情况,请尝试此操作。为我工作

        InputStream inputStream= new FileInputStream(completeFileName);
        Reader reader = new InputStreamReader(inputStream,"UTF-8");
        InputSource is = new InputSource(reader);
        is.setEncoding("UTF-8");

        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(is);

XML文件是否以
开头?@Matt Ball,这就是问题所在。我以错误的方式写入文件,因此无法将其放入XML中。相反,我想用javainputsource编写它,它是在DOMAPI中吗?不工作或者我不知道如何使用它。无法从静态上下文引用非静态方法解析。该方法的第二个参数是URI,而不是字符编码。当提供
UTF-8
解决任何问题时,这是相当奇怪的……很高兴听到您发现它很有用……)