如何解决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里找到你想 ...
随机推荐
- bootstrap制作搜索框及添加回车搜索事件
下面是开发中用bootstrap制作的一个搜索框,以及给搜索框添加回车搜索事件的一个小案例. bootstrap制作搜索框及添加回车搜索事件 下面是功能实现的代码: <!DOCTYPE html ...
- Java Iterator, ListIterator 和 foreach语句使用
Java Iterator, ListIterator 和 foreach语句使用 foreach语句结构: for(part1:part2){part3}; part2 中是一个数组对象,或者是带 ...
- ubuntu远程桌面连接windows系统(转)
现在用ubuntu系统,公司买了个windows的服务器,需要给配置一套环境,来回跑很麻烦,就想windows下可以的远程桌面,linux应该也有. 现在自己的ubuntu13.10,无法进入桌面的& ...
- 自适应UITableView的Cell高度问题
1.自己计算Cell的高度返回: 1>model中计算: // // InfoModel.h // OCDemo // // Created by 思 彭 on 16/12/27. // Cop ...
- Android之数据库升级onUpgrade降级onDowngrade
借用API文档解释: public abstract void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 当数据库需要升 ...
- textarea之placeholder
placeholder 属性适用于以下的 <input> 类型:text, search, url, telephone, email 以及 password.这个属性是html5才有的新 ...
- java的Map及Map.Entry解析
Map<K,V>是以键-值对存储的(key-value), 而Entry<K,V>是Map中的一个接口,Map.Entry<K,V>接口主要用于获取.比较 key和 ...
- Codeforce 370J Bottles(动态规划-01背包)
题目链接:http://codeforces.com/problemset/problem/730/J 题目大意:有n个杯子, 每个杯子有两个值一个是已装水量,一个是可装水量.从一个杯子向另一个杯子倒 ...
- Sublime text 3 中Package Control 的安装与使用方法和解决Sublime Text 3不能正确显示中文的问题
Sublime text 3 中Package Control 的安装与使用方法,英文好可以在这个网址看看, 下面简单的说明一下 : https://packagecontrol.io/install ...
- [题解]USACO 1.3 Wormholes
Wormholes Farmer John's hobby of conducting high-energy physics experiments on weekends has backfire ...