如何避免解析奇怪的字符

时间:2016-01-19 09:04:04

标签: java xml sax stax

在处理XML文件时,Stax解析器遇到以下行:

<node id="281224530" lat="48.8975614" lon="8.7055191" version="8" timestamp="2015-06-07T22:47:39Z" changeset="31801740" uid="272351" user="Krte�?ek">

正如您所看到的那样,行末尾有一个奇怪的字符,当解析器到达该行时,程序停止并给出以下错误:

Exception in thread "main" javax.xml.stream.XMLStreamException: ParseError  
at [row,col]:[338019,145]

Message: Ungültiges Byte 2 von 2-Byte-UTF-8-Sequenz.
at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(Unknown 
Source)
at com.example.Main.main(Main.java:46)

我是否应该在Eclipse的设置中更改以避免该错误?

更新

代码:

XMLInputFactory factory = XMLInputFactory.newInstance();
        XMLStreamReader parser = null;
        try {
            parser = factory.createXMLStreamReader(in);
        } catch (XMLStreamException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            Log.d(TAG, "newParser",
                    "e/createXMLStreamReader: " + e.getMessage());
        }

3 个答案:

答案 0 :(得分:1)

它不是eclipse,而是关于文件的编码。有两种情况:

1)文件已损坏,即它包含不正确的符号,而不是来自定义的编码

2)文件不在utf-8编码中,并且在xml标头中定义。因此,您应该检查,您正在正确阅读文件内容。

答案 1 :(得分:0)

使用ControlFormat格式读取XML。

UTF8

从评论中查看文件的编码:来自reateXMLEventReader(InputStream stream, String encoding)

File file = new File("c:\\your-file.xml");
InputStream inputStream= new FileInputStream(file);
Reader reader = new InputStreamReader(inputStream,StandardCharsets.UTF_8);

答案 2 :(得分:0)

如果您在0中编辑并保存了XML文件,那么如果eclipse未配置为使用eclipse,则可能会出现问题。请检查此问题:How to support UTF-8 encoding in Eclipse

否则,您可能不需要对代码执行任何操作。您只需要正确的UTF-8编码内容。

相关问题