zoukankan      html  css  js  c++  java
  • 对象转为xml输出到页面,中文乱码问题

    本项目是一个webseriice的客户端项目

    Action 类:

    SearchHotelRQ reqobj = XmlObjUtil.xml2Obj(reqstr, SearchHotelRQ.class);
                SearchHotelRS searchHotelRS = port.searchHotel(reqobj);
                resxml = XmlObjUtil.objToXmlString(searchHotelRS);
                return resxml;

    对象转为xml的方法:objToXmlString

    public static <T> 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("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>", ""));
            //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("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>", ""));取到的中文是乱码

  • 相关阅读:
    红黑树——以无厚入有间
    红黑树——依天理以神遇
    B-树 分合之道
    B-树 动机与结构
    云心出岫——Splay Tree
    双散列和再散列暨散列表总结
    开放定址法——平方探测(Quadratic Probing)
    [LeetCode 109]
    [LeetCode 110]
    [LeetCode 111]
  • 原文地址:https://www.cnblogs.com/zyfxlv/p/2872955.html
Copyright © 2011-2022 走看看