如何解决WebService参数传递中文乱码问题
2015-12-29 11:51
288 查看
1,问题由来
我的主要工作是负责统一适配平台这块,主要任务是提供给客户统一的调用接口,客户使用这个接口可以通过我们再调不同厂家的接口。主要流程如下:现在客户那边传来的请求报文里面包含中文,使用webservice发送一般是用UTF-8,但是客户那边传来的请求的格式肯定不是的,不然也不会出现中文乱码:
2,解决之法
在北向处理的流程中,在接收到客户传来的报文的时候进行编码转换。加上下面两个方法,在得到客户请求报文时只需调用第一个方法转换一下即可。//中文字符处理 public String charSetConvert(String xmlRequest){ String charSet = NeopServerImpl.getEncoding(xmlRequest); try { byte[] b = xmlRequest.getBytes(charSet); xmlRequest = new String(b, "UTF-8"); } catch (Exception e) { logger.error("输入的内容不属于常见的编码格式,请再仔细核实", e); } return xmlRequest; } public static String getEncoding(String str) { String encode = "GB2312"; try { if (str.equals(new String(str.getBytes(encode), encode))) { // 判断是不是GB2312 String s = encode; return s; // 是的话,返回GB2312,以下代码同理 } } catch (Exception e) { logger.error("getEncoding异常---GB2312", e); } encode = "ISO-8859-1"; try { if (str.equals(new String(str.getBytes(encode), encode))) { // 判断是不是ISO-8859-1 String s1 = encode; return s1; } } catch (Exception e) { logger.error("getEncoding异常---ISO-8859-1", e); } encode = "UTF-8"; try { if (str.equals(new String(str.getBytes(encode), encode))) { // 判断是不是UTF-8编码 String s2 = encode; return s2; } } catch (Exception e) { logger.error("getEncoding异常---UTF-8", e); } encode = "GBK"; try { if (str.equals(new String(str.getBytes(encode), encode))) { // 判断是不是GBK String s3 = encode; return s3; } } catch (Exception e) { logger.error("getEncoding异常---GBK", e); } return ""; // 到这一步,你就应该检查是不是其他编码啦
}
注:以上部分代码参考网上资源:http://zhidao.baidu.com/link?url=gXafoS7hIAKe8lcuUldTW9sQWa3C3VnLLbfid09lY2WYO8ypuM0yc5BFGKFY5vaPuaJBLi4Qkr5cDBe0_eWE0_
相关文章推荐
- javascript的未知尺寸图片保持比例水平垂直居中函数
- C#动态编译
- java+ajax实例
- PostgreSQL学习手册(系统表)
- 抽象类与接口
- 静态链表的所有基本操作
- 分区表创建与截断
- simpletreemodel 改的
- Swift语法笔记
- c 语言文件操作
- 禁止鼠标拖动图片在新窗口打开
- Bootstrap表单
- MFC中的句柄
- PostgreSQL学习手册(数据库维护)
- sda must have a gpt disk label sda必须有gpt硬盘标签
- PostgresSQL数据库操作命令
- Linux中top和free命令详解
- PostgreSQL学习手册(数据库管理)
- <mvc:annotation-driven/>作用
- 转 在xcode6中使用矢量图(iPhone6置配UI)