1

我正在使用 StAX 读取 XML 文件,但遇到像 žćčšđ 这样的字符问题。代码与 SAX 中的代码几乎相同,但我没有那种问题。

这是 xml 文档的一部分

<?xml version = "1.0" encoding="UTF-8" ?>      
<Autor>
        <Id>1</Id>
        <Meno>Jano Žiška</Meno>
        <Email>dfdsfsfdsdf@gmail.com</Email>
        <tel_cislo typ="mobil">0944564685</tel_cislo>  
        <plat>500</plat>
      </Autor>

爪哇

        public static void main(String[] args) {
            try {
              XMLInputFactory f = XMLInputFactory.newInstance();
              XMLStreamReader r = f.createXMLStreamReader(new FileReader(SUBOR));
            }
....
          if (r.getLocalName().equals(ELEMENT_MENO) == true) {
            String v = r.getElementText();
             System.out.println("meno:\t\t\t " + v);
          }

如何在java中指定编码?谢谢

4

2 回答 2

3

除非您有充分的理由,否则您应该始终使用带有 XML 的二进制流(InputStream/OutputStream),而不是字符流(Reader/Writer)。使用字符流有损坏 xml 的风险(如 OP 的原始代码所示)。

XMLStreamReader r = f.createXMLStreamReader(new FileInputStream( SUBOR ));
于 2013-04-25T19:33:58.917 回答
0

不要使用 FileReader,而是这样做:

XMLStreamReader r = f.createXMLStreamReader(
        new InputStreamReader(
                new FileInputStream( SUBOR ),
                Charset.forName( "UTF8" ) ) );
于 2013-04-25T18:42:00.247 回答