Android XmlPullParser UTF-8 问题
Posted
技术标签:
【中文标题】Android XmlPullParser UTF-8 问题【英文标题】:Android XmlPullParser UTF-8 problem 【发布时间】:2011-01-11 00:51:46 【问题描述】:我有一个用
构建的 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。我错过了什么吗?
提前谢谢你。
【问题讨论】:
【参考方案1】:不确定是否重要,但您可以尝试两件事
-
使用
UTF-8
而不是小写
还有
-
尝试使用
pullParser.setInput(theInputStream);
并查看pullparser
是否可以自行确定编码。
【讨论】:
pullParser.setInput(theInputStream);
帮了我大忙 - 使用 InputStream
时,XmlPullParser
似乎正确处理了 BOM 【参考方案2】:
这个问题很老,但我最近使用 XMLPullParser 遇到了同样的问题。就我而言,我正在从 OkHttp ResponseBody 解析 UTF-8 编码的 XML 流。我有必要为此指定输入编码字符集。万一其他人降落在这里:
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)
...
【讨论】:
以上是关于Android XmlPullParser UTF-8 问题的主要内容,如果未能解决你的问题,请参考以下文章
如何使用xmlpullparser解析android中的汉字
Android:DOM vs SAX vs XMLPullParser 解析?