您的位置:首页 > 理论基础 > 计算机网络

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");
String s = new String(searchParam.getBytes("ISO-8859-1"),"GBK");
此处的GBK是你要使用的编码,如果是输出到jsp的话就是你jsp页面的编码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java web js 前端