开发过程中遇到KXmlParser 中文乱码问题,看是否对YY有所帮助。
解决方法如下:
1、把字符串转换为"UTF-8")字节数组
2、字节流也转换为UTF-8;
eg:
public void init(){
String xml=NameUtil.XML_HEAD+
"<response><couponLists>" +
"<couponList id='id1'>couponList1</couponList>" +
"<couponList id='id2'>成功了没</couponList>" +
"<couponList id='id3'>couponList3</couponList>" +
"<couponList id='id4'>couponList4</couponList>" +
"<couponList id='id5'>couponList5</couponList>" +
"<couponList id='id6'>couponList6</couponList>" +
"</couponLists></response>";
try {
String src=System.getProperty("microedition.encoding");
String name="";
String text="";
String id="";
vector=new Hashtable();
InputStream bin =new ByteArrayInputStream(xml.toString().getBytes("UTF-8") );
InputStreamReader in = new InputStreamReader( bin ,"UTF-8");
KXmlParser parser=new KXmlParser();
parser.setInput(in);
parser.next();
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_DOCUMENT) {
//System.out.println("Start document:");
} else if (eventType == XmlPullParser.END_DOCUMENT) {
//System.out.println("End document");
} else if (eventType == XmlPullParser.START_TAG) {
// System.out.println(" " + parser.getName());
//System.out.println("Start Count: " + parser.getAttributeCount());
int size = parser.getAttributeCount();
// System.out.println("size="+size);
for(int i=0; i<size; i++){
// System.out.println(parser.getAttributeName(i)+"=" + parser.getAttributeValue(i));
id=parser.getAttributeValue(i);
}
} else if (eventType == XmlPullParser.END_TAG) {
// System.out.println(" " + parser.getName());
} else if (eventType == XmlPullParser.TEXT) {
// System.out.println(id +"="+ parser.getText());
vector.put(id, parser.getText());
}
eventType = parser.next();
}
in.close();
bin.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}