KXML解析中文乱码
我从服务器获取的XML, 直接显示在手机上时中文不会出现乱码, 但这个XML经过KXML解析过后就出现, 里面的中文就出现乱码了, 我试过把它转化为UTF-8都不成功,
但我在模拟器上运行时是正确的, 但装到我的N73上时就乱码了, 为什么呢?
这是XML:
public String xmlDocument = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" +
"<list><item>华南</item></list>" +
"<list><item>华北</item></list>" +
"<list><item>华东</item></list>";
这是KXML解析,
public void Test_Analyze() throws XmlPullParserException
{
KXmlParser parser = new KXmlParser();
ByteArrayInputStream bin = new ByteArrayInputStream(xmlDocument.getBytes());
InputStreamReader in = new InputStreamReader(bin);
parser.setInput(in);
int eventType = parser.getEventType();
try
{
while (eventType != XmlPullParser.END_DOCUMENT)
{
// 如果当前标签为开始标签,且标签内容为person的话
if(eventType == XmlPullParser.START_TAG && parser.getName().equals("list"))
{
clsArea Area = new clsArea();
while ((eventType != XmlPullParser.END_TAG && parser.getName() != "list")){
if (parser.getName().equals("item")) {
Area.strAreaName = parser.nextText();
}
eventType = parser.nextTag();
}
Vec_Area.addElement(Area);
}
eventType = parser.next();
}
}
catch(
IOException ioe)
{
}
}
跪求解答, 已经困扰了我两个星期了。
------解决方案--------------------我在J2ME里面也遇到过乱码问题,
我那时的解决方法是这样的,
String content = "";//content是你从KXML解析出来的数据(中文)
String showContent = new String(content.getBytes(),"gb2312");//showContent是你显示到手机上的数据
不知道用到你那边啊行。。
------解决方案--------------------ByteArrayInputStream bin = new ByteArrayInputStream(xmlDocument.getBytes());
InputStreamReader in = new InputStreamReader(bin, "utf-8"); //用UTF-8试试
------解决方案--------------------嘿嘿,楼主运气不错,我前几天解决了,流的编码类型填null,不明白的话看看kxml的源码。
------解决方案--------------------setInput(inputStream , null);
------解决方案--------------------这个错误不是你的String错误,是kxml内部解析的时候的错误,解决方法看楼上的,接分
------解决方案--------------------手机有自己的编码格式 !这个问题也遇到过 !你看看你手机的编码格式吧!
------解决方案--------------------这样试过也不行?
Java code
public String xmlDocument = " <?xml version=\"1.0\" encoding=\"UTF-8\" ?>" +
" <list> <item>华南 </item> </list>" +
" <list> <item>华北 </item> </list>" +
" <list> <item>华东 </item> </list>";
这是KXML解析,
public void Test_Analyze() throws XmlPullParserException
{
KXmlParser parser = new KXmlParser();
ByteArrayInputStream bin = new ByteArrayInputStream(xmlDocument.getBytes());
InputStreamReader in = new InputStreamReader(bin, "utf-8"); //用UTF-8试试
parser.setInput(in);
int eventType = parser.getEventType();
try
{
while (eventType != XmlPullParser.END_DOCUMENT)
{
// 如果当前标签为开始标签,且标签内容为person的话
if(eventType == XmlPullParser.START_TAG && parser.getName().equals("list"))
{
clsArea Area = new clsArea();
while ((eventType != XmlPullParser.END_TAG && parser.getName() != "list")){
if (parser.getName().equals("item")) {
Area.strAreaName = parser.nextText();
}
eventType = parser.nextTag();
}
Vec_Area.addElement(Area);
}
eventType = parser.next();
}
}
catch(IOException ioe)
{
}
}