我正在尝试解析包含希伯来语字符的XML文件。 我知道该文件是正确的,因为如果我输出文件(来自不同的软件)没有希伯来字符,它解析就好了。
我尝试了很多东西,但我总是得到这个错误
MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence.
我最近的尝试是使用FileInputStream
打开它并指定编码
DocumentBuilder db = dbf.newDocumentBuilder();
document = db.parse(new FileInputStream(new File(xmlFileName)), "Cp1252");
(Cp1252
是一种在不同应用中适合我的编码)
但我得到了同样的结果。
尝试使用ByteArray
,没有任何效果。
有什么建议吗?
答案 0 :(得分:6)
如果您知道文件的正确编码并且它不是“utf-8”,那么您可以将其添加到xml标题中:
<?xml version="1.0" encoding="[correct encoding here]" ?>
或将其解析为Reader:
db.parse(new InputStreamReader(new FileInputStream(new File(xmlFileName)), "[correct encoding here]"));
答案 1 :(得分:0)
解决方案非常简单,以UTF-8格式获取内容,并覆盖SAX输入源。
File file = new File("c:\\file-utf.xml");
InputStream inputStream= new FileInputStream(file);
Reader reader = new InputStreamReader(inputStream,"UTF-8");
InputSource is = new InputSource(reader);
// is.setEncoding("UTF-8"); -> This line causes error! Content is not allowed in prolog
saxParser.parse(is, handler);
您可以在此处阅读完整示例 - http://www.mkyong.com/java/how-to-read-utf-8-xml-file-in-java-sax-parser/