【问题标题】:XML parse encoding problems in Android?Android中的XML解析编码问题?
【发布时间】:2013-09-18 09:02:46
【问题描述】:

我正在解析传入的 xml 提要,在 android 中使用它在应用程序小部件中,问题是法语字符没有像这样在那个 xml 中正确编码:

Super Promo � l'incontournable Alhambra Thalasso 5* Hammamet : La nuit du 29/08 � seulement 107.185 DT au lieu de 126.100 DT  en LPD

我正在像这样解析文件:

            InputSource isrc = new InputSource(this.feed.openStream());
            isrc.setEncoding("UTF-8");

            DocumentBuilder builder = factory.newDocumentBuilder();
            Document dom = builder.parse(isrc.getByteStream());
            Element root = dom.getDocumentElement();

有没有办法摆脱这些奇怪的字符?

谢谢。

【问题讨论】:

    标签: android xml utf-8 character-encoding xml-parsing


    【解决方案1】:

    您硬编码将编码设置为“UTF-8”,但发件人实际使用的是什么编码?

    在 XML 中,您通常会预先获取元信息,例如 <?xml version="1.0" encoding="utf-8"?>。您应该使用元信息中的编码值进行正确编码。

    代码中的另一个问题是,您基本上绕过了 Document dom = builder.parse(isrc.getByteStream()); 行的编码。您应该改为传递InputSource

    Document dom = builder.parse(isrc);.

    我实际上在下面的代码中使用了Reader,因为我直接使用Java的编码:

    Document dom = builder.parse(
        new InputSource(
            new InputStreamReader(
                    feed.openStream(),
                    "[encoding goes here, usually UTF-8]")));
    

    【讨论】:

    • 谢谢,终于找到问题所在了,实际上生产者将xml设置为“utf-8”,但是当我将其解析为“ISO-8859-1”时一切正常
    【解决方案2】:

    请看this

    我建议尝试使用一次 UTF-16 编码

    【讨论】:

    • 谢谢,我看到了,但问题是生成 xml 的不是我,而且我没有办法让它正确。我必须找到一个按原样处理此文件的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多