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\"?>", ""));取到的中文是乱码

  • 相关阅读:
    计算机硬件介绍
    SC-控制Windows服务的命令
    SQL Server 2008中的Service SID 介绍
    内置系统账户:Local system/Network service/Local Service 区别
    用于sql server启动的账户
    sql server常见服务
    oracle和sql server的区别(1)
    架构设计学习(一)
    web项目分层设计
    封装继承多态
  • 原文地址:https://www.cnblogs.com/zyfxlv/p/2872955.html
Copyright © 2011-2022 走看看