Android XmlPullParser UTF-8 problem
I have an XML document built with
org.xmlpull.v1.XmlSerializer
This document contains following XML prolog
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
When I try to parse this document using
import org.xmlpull.v1.XmlPullParser;
with following configuration code
XmlPullParser pullParser = Xml.newPullParser();
pullParser.setInput(theInputStream, "utf-8");
I g开发者_StackOverflow社区et undecoded utf-8 strings when I call
String text = pullParser.getText();
So it seems that XmlPullParser in Android (I use 1.5) doesn't support utf-8. Did I miss something?
Thank you in advance.
Not sure if it matter but can you try two things
- Use
UTF-8
instead of lower case
And
- Try using
pullParser.setInput(theInputStream);
and seeing if thepullparser
can determine the encoding on it's own.
This question is old but I recently ran into the same issue using XMLPullParser. In my case, I was parsing a stream of UTF-8 encoded XML from an OkHttp ResponseBody. It was necessary for me to specify the input encoding charset for this to work. In case someone else lands here:
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)
...
}
精彩评论