0

私はドイツ語のアプリに取り組んでいます。XML形式でデータを取得しています。これらの XML を解析し、TextView にデータを表示するために SAX パーサーを使用しました。解析後に得た特殊文字の問題を除いて、すべて正常に機能しています。

これは、URL リンクから取得した XML です。この XML には utf-8 エンコーディングがあります。この XML ファイルでは、すべての文字に問題はありません。

<?xml version="1.0" encoding="utf-8"?>
<posts>
    <page id="001">
        <title><![CDATA[Sie kaufen bei uns ausschließlich Holzkunst- und Volkskunst-Produkte ]]></title>
        <detial><![CDATA[Durch enge Beziehungen mit unseren Lieferanten können wir attraktive rückläufig 
        Preise und schnelle Lieferungen gewährleisten. Caroline Féry and Laura Herbst Universität Potsdam Mein 
        Flugzeug hatte zwölf Stunden VERSPÄTUNG </p>]]></detial>
    </page>     
</posts>

この XML を解析するために SAX パーサーを使用しました:- (そして、解析されたデータを に表示しTextViewます。)

public class GermanParseActivity extends Activity {
    /** Called when the activity is first created. */

    static final String URL = "http://www.xyz.com/id=1";

    ItemList itemList;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        XMLParser parser = new XMLParser();
        String XML = parser.getXmlFromUrl(URL);

        System.out.println("This XML is ========>"+XML);

       try
       {
           SAXParserFactory spf = SAXParserFactory.newInstance();
       SAXParser sp = spf.newSAXParser();
           XMLReader xr = sp.getXMLReader();

           /** Create handler to handle XML Tags ( extends DefaultHandler ) */
           MyXMLHandler myXMLHandler = new MyXMLHandler();
           xr.setContentHandler(myXMLHandler);

       ByteArrayInputStream is = new ByteArrayInputStream(XML.getBytes());
       xr.parse(new InputSource(is));
      }
      catch(Exception e)
      {

      }

      itemList = MyXMLHandler.itemList;

      ArrayList<String> listItem= itemList.getTitle();


     ListView lview = (ListView) findViewById(R.id.listview1);
     myAdapter adapter = new myAdapter(this, listItem);
     lview.setAdapter(adapter);
    }


}

しかし、解析後、XML ファイルには含まれていないが、XML ファイルの解析後に生成された奇妙な文字が表示されます。

これらの文字のように:

解析前 解析後

können ---> können

rückläufig ---> rückläufig

gewährleisten ---> gewährleisten

誰でもこの問題を解決する適切な方法を提案できますか?

4

2 に答える 2

4

入力を再エンコードする必要があります。問題は、テキストが UTF-8 であるにもかかわらず、ISO-8859-1 として解釈されることです。これは SAX のバグのようです。

String output=new String(input.getBytes("8859_1"), "utf-8");

その行は ISO-8859-1 を取り、それを Java で使用される utf-8 に変換します。

于 2012-05-24T06:55:38.507 に答える
1

ここから私のアンサーを得ました 彼らは見出しが次のようであるべきだと示唆しています:

<?xml version="1.0" encoding="ISO-8859-1"?>

それ以外の

<?xml version="1.0" encoding="utf-8"?>

それが答えであることを願っています-編集でxmlを制御できないことがわかったので、これは役に立ちません.rekireの答えはオプションです

于 2012-05-24T06:56:27.917 に答える