+ -
当前位置:首页 → 问答吧 → 求解:解析xml遇到中文乱码

求解:解析xml遇到中文乱码

时间:2011-09-08

来源:互联网

求解决中文乱码方法!!!!
resourceColumnVersionReqMap.put("searchkey", searchkey.getText());
searchkey.getText()中取到的中文为??

解析的xml:
System.out.println("str:" + str);打印下面xml字符串
<?xml version="1.0" encoding="UTF-8"?><ecity><msgname>searchreq</msgname><msgversion>1.0</msgversion><transactionid>1</transactionid><userid>100254</userid><msgsender>client</msgsender><svccont><searchkey>企业</searchkey><startpage>0</startpage><itemnum>20</itemnum></svccont></ecity>

代码如下:
  public static Map<String,String> SearchColumnVersionReqXml(InputStream in){
Map<String,String> resourceColumnVersionReqMap = new HashMap<String, String>();
SAXReader saxReader = new SAXReader(); 
try {

System.out.println("============SearchLANM stream to string=============");
String s = ColumnReqUtil.inputStreamToString(in);
System.out.println("s:" + s);
System.out.println("============SearchLANM string utf-8=============");
String str = URLDecoder.decode(s, "UTF-8"); 
System.out.println("str:" + str);

System.out.println("============SearchLANM string to stream=============");
InputStream is = ColumnReqUtil.StringToInputStream(str);

InputStreamReader strInStream = new InputStreamReader(is,"UTF-8");
Document document = saxReader.read(strInStream);
Element root = document.getRootElement();
Element svccont = root.element("svccont");
Element searchkey = svccont.element("searchkey");
if(searchkey!=null&&!(searchkey.getText()==null||searchkey.getText().equals(""))){
resourceColumnVersionReqMap.put("searchkey", searchkey.getText()); }
Element token=svccont.element("startpage"); 
if(token!=null&&!(token.getText()==null||token.getText().equals(""))){
resourceColumnVersionReqMap.put("startpage", token.getText());
}
Element citycode=svccont.element("itemnum"); 
if(citycode!=null&&!(citycode.getText()==null||citycode.getText().equals(""))){
resourceColumnVersionReqMap.put("itemnum", citycode.getText());
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}  
return resourceColumnVersionReqMap;
}

作者: QQ13262407   发布时间: 2011-09-08

为什么要String str = URLDecoder.decode(s, "UTF-8"); ?
数据传送过来之前有没有URLEncode?

作者: vcvsvdvn   发布时间: 2011-09-08

这段代码是服务端解析xml,客户端传过来的String test = "%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F%3E%3Cecity%3E%3Cmsgname%3Esearchreq%3C%2Fmsgname%3E%3Cmsgversion%3E1.0%3C%2Fmsgversion%3E%3Ctransactionid%3E1%3C%2Ftransactionid%3E%3Cuserid%3E100254%3C%2Fuserid%3E%3Cmsgsender%3Eclient%3C%2Fmsgsender%3E%3Csvccont%3E%3Csearchkey%3E%E4%BC%81%3C%2Fsearchkey%3E%3Cstartpage%3E0%3C%2Fstartpage%3E%3Citemnum%3E20%3C%2Fitemnum%3E%3C%2Fsvccont%3E%3C%2Fecity%3E";
我这里用URLDecoder.decode(s, "UTF-8")进行了转换
转了后<?xml version="1.0" encoding="UTF-8"?><ecity><msgname>searchreq</msgname><msgversion>1.0</msgversion><transactionid>1</transactionid><userid>100254</userid><msgsender>client</msgsender><svccont><searchkey>企业</searchkey><startpage>0</startpage><itemnum>20</itemnum></svccont></ecity>
在解析

作者: QQ13262407   发布时间: 2011-09-08

热门下载

更多