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

  • 相关阅读:
    ElasticSearch 高级DSL查询语句
    docker改国内官方镜像
    step1: python & scrapy安装
    step7: 输出到json文件
    step6: item与pipeline
    step5: 编写spider爬取
    step4: Xpath的使用
    step3: 创建jobbole爬虫
    step2: 爬取廖雪峰博客
    解决WAS更新web.xml文件不生效的问题(web_merged.xml是罪魁祸首)
  • 原文地址:https://www.cnblogs.com/zyfxlv/p/2872955.html
Copyright © 2011-2022 走看看