如何解决WebService参数传递中文乱码问题
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_
如何解决WebService参数传递中文乱码问题的更多相关文章
- 教你解决Sublime Text中文乱码问题
教你解决Sublime Text中文乱码问题[转载自成长的企鹅] Sublime Text 2是一个非常不错的源代码及文本编辑器,但是不支持GB2312和GBK编码在很多情况下会非常麻烦. ...
- 分享一个解决MySQL写入中文乱码的方法
分享一个解决MySQL写入中文乱码的方法 之前有发帖请教过如何解决MySQL写入中文乱码的问题.但没人会,或者是会的人不想回答.搜索网上的答案并尝试很多次无效,所以当时就因为这个乱码问题搁浅了一个软件 ...
- 完美解决Informix的中文乱码问题
完美解决Informix的中文乱码问题 Informix是IBM旗下的一款数据库,要不是这个项目需要,估计这辈子我都不知道居然还有这么一款数据库.想来公司的项目遍布全国各地,各种部署环境各种应用场景 ...
- 使用过滤器(Filter)解决请求参数中文乱码问题(复杂方式)
前述: 在写这篇笔记之前,对笔记中的设计模式进行介绍: 本篇笔记中将要使用到的设计模式是:装饰(包装)设计模式 (1)装饰(包装)设计模式口诀: ...
- 解决Ubuntu系统中文乱码显示问题,终端打开文件及查看目录
解决Ubuntu系统中文乱码显示问题 [日期:2014-02-20] 来源:Linux社区 作者:njchenyi [字体:大 中 小] 我是先安装了Ubuntu 12.04 Server,然后 ...
- gedit 没有preference项,使preference回归,并用命令行设置行号,解决centos7下中文乱码,text wrapping等问题
1. 最简单的,使preference选项回来: gsettings set org.gnome.settings-daemon.plugins.xsettings overrides '@a{sv} ...
- 尚硅谷面试第一季-09SpringMVC中如何解决POST请求中文乱码问题GET的又如何处理呢
目录结构: 关键代码: web.xml <filter> <filter-name>CharacterEncodingFilter</filter-name> &l ...
- 解决phantomjs输出中文乱码
解决phantomjs输出中文乱码,可以在js文件里添加如下语句: phantom.outputEncoding="gb2312"; // 解决输出乱码
- zabbix解决监控图形中文乱码
原文: https://blog.csdn.net/xujiamin0022016/article/details/86541783 zabbix 4解决监控图形中文乱码首先在windows里找到你想 ...
随机推荐
- html 报表导出excel防止数字变科学计数
在html 标签加: <html xmlns:x="urn:schemas-microsoft-com:office:excel"> 在要导出的tr加: &l ...
- js 什么是变量的提升?
- VBA 小知识
1. 循环 Dim i As Integer 'body Next 'body Wend 2. 键值数据结构 'create dictionary object Set dictMembers = C ...
- miniui中常用的状态显示方式
1.查询sys_code表得到对应的状态 考生状态:<input class="mini-combobox" style="" textField=&qu ...
- CSS 图片倾斜的制作
<style> #zhong{ height:600px; width:1350px; position:relative; z-index:2} .znei{ height:60px; ...
- Hibernate报错:org.hibernate.ObjectNotFoundException: No row with the given identifier exists 解决办法
报错信息: org.hibernate.event.internal.DefaultLoadEventListener onLoad INFO: HHH000327: Error performing ...
- java_method_stringUtils
/** * 字符串英文单双引号处理,将中英文引号转为中文的引号 * @param temp * @return */ public static String getStringDatabase(St ...
- python集合(set)操作
python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和 ...
- sql server 执行计划(execution plan)介绍
大纲:目的介绍sql server 中执行计划的大致使用,当遇到查询性能瓶颈时,可以发挥用处,而且带有比较详细的学习文档和计划,阅读者可以按照我计划进行,从而达到对执行计划一个比较系统的学习. 什么是 ...
- HR开发 操作信息类型数据
1.通过函数操作. . DATA: ZRETURN TYPE BAPIRETURN1, ZPAKEY TYPE BAPIPAKEY. GET PERNR. LOOP AT P0001 WHERE .. ...