java - Saxparser:格式不正确(无效标记)
问题描述
我复制并编辑了一些代码,然后从 Android Studio 在我的手机上运行它:
try {
File myFile = new File(Storage.CONTENT_CACHE, "test.xml");
if(!myFile.exists()) {
String xml = "<?xml version='1.0' encoding='windows-1252'?><root>ä</root>";
OutputStreamWriter wrt = new OutputStreamWriter(new FileOutputStream(myFile), "Cp1252");
wrt.write(xml);
wrt.close();
}
SAXParserFactory sf = SAXParserFactory.newInstance();
SAXParser p = sf.newSAXParser();
InputSource inputSource = new InputSource();
inputSource.setByteStream(new FileInputStream(myFile));
p.parse(inputSource, new DefaultHandler() {
public void characters(char[] ch, int start, int length) throws SAXException {
String test = String.valueOf(ch, start, length);
String s = "breakpt";
}
});
} catch (Exception e) {
e.printStackTrace();
}
有人可以解释为什么我收到消息“格式不正确(无效令牌)”的异常吗?
解决方案
看来你需要使用inputSource.setEncoding("windows-1252")
. 其他库试图检测字符集,但我找不到任何健壮的。
推荐阅读
- java - 如何从本地 html 文件开始 Java Web Start?
- ruby-on-rails - 如何从 Ruby ping 另一个在本地运行的应用程序
- python - 如何从 CSV 文件中提取目标行、前行和后行?
- javascript - 无法从 Amazon Cognito 用户池获取用户会话
- mongodb - 更新 mongo/mongoose 版本后更新文档时出错
- excel - 当您在子程序内部时,事件可以触发吗?
- javascript - 使用 jQuery 单击后更改按钮的文本
- antlr - 确定匹配哪个令牌
- ssh - Vagrant Virtualbox端口转发:对等方重置连接
- android - 更新小部件时出现空列表异常