Java 获取Http Get请求中文参数乱码解决方案
2015-12-14 17:09
661 查看
在Java web 中web服务器对于请求参数可以使用request.setCharacter(“”)方法对其进行编码,但是这种方式只会对请求的body部分进行编码解析,对于url中的参数不做处理。
而浏览器默认会使用ISO-8859-1对请求中的中文参数进行编码,所以在服务端java中,如果不做处理,获取到的中文参数总是乱码。
有2中方式可以解决该问题:
1.浏览器发送前使用JS函数对要传递的中文进行两次encodeURIComponent(encodeURIComponent("中文参数")),服务端在接受时使用java.net.Decoder.decode(),进行相应的解码,便可以得到正确的中文参数。但是这种方式经过测试,如果将参数中的特殊符号,比如|等一同编码两次,会出现服务端接收不到参数的问题,原因是经过2次编码之后的字符串与浏览器URL地址规则冲突。所以最好仅对参数中的中文部分进行编码后再传输。
2.前端浏览器不做任何操作,在后台使用如下片段进行解析,可以很方便的解决乱码问题。
String searchParam = request.getParameter("searchParam");
而浏览器默认会使用ISO-8859-1对请求中的中文参数进行编码,所以在服务端java中,如果不做处理,获取到的中文参数总是乱码。
有2中方式可以解决该问题:
1.浏览器发送前使用JS函数对要传递的中文进行两次encodeURIComponent(encodeURIComponent("中文参数")),服务端在接受时使用java.net.Decoder.decode(),进行相应的解码,便可以得到正确的中文参数。但是这种方式经过测试,如果将参数中的特殊符号,比如|等一同编码两次,会出现服务端接收不到参数的问题,原因是经过2次编码之后的字符串与浏览器URL地址规则冲突。所以最好仅对参数中的中文部分进行编码后再传输。
2.前端浏览器不做任何操作,在后台使用如下片段进行解析,可以很方便的解决乱码问题。
String searchParam = request.getParameter("searchParam");
String s = new String(searchParam.getBytes("ISO-8859-1"),"GBK");此处的GBK是你要使用的编码,如果是输出到jsp的话就是你jsp页面的编码。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- GUI - Web前端开发框架
- 介绍一款信息管理系统的开源框架---jeecg
- Extjs4.0 最新最全视频教程
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- Javascript中toFixed方法的改进
- PropertyChangeListener简单理解
- 插入排序