Android中的XML解析编码问题?

时间:2013-09-18 09:02:47

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

我正在解析一个传入的xml提要,在android中使用它在app小部件中,问题是,法语字符在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();

有没有办法摆脱这些奇怪的角色?

感谢。

2 个答案:

答案 0 :(得分:2)

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

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

代码中的另一个问题是,您基本上绕过了行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]")));

答案 1 :(得分:1)

请参阅this

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