gpt4 book ai didi

java - SAXParser 无法解析某些字符

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:23:30 30 4
gpt4 key购买 nike

我在 android/java 上用 SAXParser 等做一些简单的 SAXParsing

它可以正确解析文件,但是当它遇到一些特殊字符时会打嗝,例如如果它解析下面这个 xml:

<?xml version="1.0" encoding="ISO-8859-1" ?><MTRXML version="1.0">
<GEOCODE key="pohj">
<LOC name1="Pohjantori" number="" city="Espoo" code="995" address="" type="1" category="poi" x="2544225" y="6674893" lon="24.79378" lat="60.18324" />
<LOC name1="Pohjois-Haaga" number="" city="Helsinki" code="41" address="" type="1" category="poi" x="2549164" y="6680186" lon="24.88405" lat="60.23018" />
<LOC name1="Pohjois-Leppävaara" number="" city="Espoo" code="50" address="" type="1" category="poi" x="2545057" y="6679240" lon="24.80974" lat="60.22216" />

当它在最后一行的 Pohjois-Leppävaara 中遇到 ä 时会打嗝。

它给出的错误是:

01-30 18:14:52.039: WARN/System.err(686): org.apache.harmony.xml.ExpatParser$ParseException: At line 5, column 24: not well-formed (invalid token)

我确信 SAXParser 可以处理这些字符,但我相信我需要在某处设置一些编码等?

Java代码是这样的:

AXParserFactory factory = SAXParserFactory.newInstance();

SAXParser parser = null;
try {
parser = factory.newSAXParser();
} catch (ParserConfigurationException e) {
e.printStackTrace();
return null;
} catch (SAXException e) {
e.printStackTrace();
return null;
}

XmlHandler handler = new XmlHandler();
try {
parser.parse(urls[0], handler);
} catch (SAXException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}

最佳答案

我认为这是文档编码中的错误。使用十六进制编辑器验证 Leppävaara 是字节序列 4c 65 70 70 e4 76 61 61 72 61。如果 ä 不是 E4,则文档已使用 ISO-8859-1 以外的某种编码保存。

关于java - SAXParser 无法解析某些字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4844013/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com