对象转为xml输出到页面,中文乱码问题
Contents
http://www.cnblogs.com/zyfxlv/archive/2013/01/23/2872955.html
本项目是一个webseriice的客户端项目
Action 类:
SearchHotelRQ reqobj = XmlObjUtil.xml2Obj(reqstr, SearchHotelRQ.class);
SearchHotelRS searchHotelRS = port.searchHotel(reqobj);
resxml = XmlObjUtil.objToXmlString(searchHotelRS);
return resxml;
对象转为xml的方法:objToXmlString
复制代码
public static String objToXmlString(T obj) throws JAXBException {
JAXBContext jc = JAXBContext.newInstance(obj.getClass());
Marshaller m = jc.createMarshaller();
m.setProperty(“jaxb.formatted.output”, true);
ByteArrayOutputStream out = new ByteArrayOutputStream();
Result result = new StreamResult(out);
m.marshal(obj, result);
//转码
byte[] bystr = out.toByteArray();
String str = “";
try {
str = new String(bystr,“UTF-8”);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
StringBuffer sb = new StringBuffer(str.replace(“”, “"));
//log.error(“JAXB transform object to string without version: “+ sb.toString());
return sb.toString();
}
复制代码
第一种转码方式(在网上找的): m.setProperty(Marshaller.JAXB_ENCODING, “UTF-8”);但在我这个项目中不起作用,不知为什么
第二种:上面方法中转码那一步,如果不转码,直接这么写的话,StringBuffer sb = new StringBuffer(new String(out.toByteArray()).replace(“”, “"));取到的中文是乱码
分类: 其他方面
Author w1100n
LastMod 2014-05-26