簡體   English   中英

Java StAX解析器中的編碼

[英]encoding in Java StAX parser

我正在使用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>

java的

        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中指定編碼? 謝謝

除非你有充分的理由 ,否則你應該始終使用帶有XML(InputStream / OutputStream)的二進制流,而不是字符流(Reader / Writer)。 使用字符流可能會破壞xml(正如OP的原始代碼所示)。

XMLStreamReader r = f.createXMLStreamReader(new FileInputStream( SUBOR ));

而不是使用FileReader,執行此操作:

XMLStreamReader r = f.createXMLStreamReader(
        new InputStreamReader(
                new FileInputStream( SUBOR ),
                Charset.forName( "UTF8" ) ) );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM