Android XmlPullParser UTF-8问题

5

我有一个使用XML构建的文档

org.xmlpull.v1.XmlSerializer

这份文档包含以下XML前言。
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>

当我尝试使用以下方法解析该文件时:
import org.xmlpull.v1.XmlPullParser;

以下是配置代码:
XmlPullParser pullParser = Xml.newPullParser();
pullParser.setInput(theInputStream, "utf-8");

当我调用时,我得到未解码的UTF-8字符串。
String text = pullParser.getText();

看起来在Android中的XmlPullParser(我使用1.5版本)不支持utf-8。我错过了什么吗?
提前致谢。
2个回答

2

不确定是否重要,但可以尝试两件事情:

  1. 使用 UTF-8 而不是小写字母。

并且

  1. 尝试使用 pullParser.setInput(theInputStream); 并查看 pullparser 是否可以自行确定编码。

pullParser.setInput(theInputStream); did the trick for me - it seems that the BOM is correctly handled by XmlPullParser when using an InputStream - David Green

1
这个问题很老了,但最近我也遇到了使用XMLPullParser的相同问题。在我的情况下,我正在解析一个UTF-8编码的XML流,它来自于OkHttp ResponseBody。为了使其正常工作,我需要指定输入编码字符集。如果有其他人遇到类似问题,请参考:
override fun convert(response: ResponseBody): ArchNewsFeed? {
        val encoding = Charsets.UTF_8.name()
        val factory = XmlPullParserFactory.newInstance()
        factory.isNamespaceAware = true;
        val parser = factory.newPullParser()
        parser.setInput(response.byteStream(), encoding)
        ...

    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接