日期:2014-05-20  浏览次数:20753 次

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) 
{ 
} 
}