KXmlParser 中文乱码问题

开发过程中遇到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();
  }
 }

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值