为什么我的DOM解析器无法读取UTF-8

我有问题,当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(),但我不知道在我的代码中把它放在哪里…

试试这个。 为我工作

  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); 

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

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

我用Eugene在那里做了什么并改变了一点。

 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’字符,或者至少是我发生的事情