搜档网
当前位置:搜档网 › java URL传递中文参数乱码解析

java URL传递中文参数乱码解析


一 从后台Action中往前台页面传递中文:

今天遇到一个问题就是在Action当中把一条中文信息绑定在URL的后面,ActionForward到别一个页面时,用reqeust.getParameter取出是出现乱码的问题。

现解决办法如下:

1、对要进行URL传递的中文字符进行编码:

String message = https://www.sodocs.net/doc/857663808.html,.URLEncoder.encode("中文字符","utf-8");

2、在取URL传递中文的页面对字符进行解码:

String msg = request.getParameter("message");
String str=new String(msg.getBytes("ISO-8859-1"),"UTF-8");

--------------------------------------------------------------------------------------

注 1、这里得出的str就是先前传入的"中文字符"。

2、为什么要对取出的字符集形式转换成UTF-8形式,是因为ISO-8859-1是Java中网络传输使用的标准字符集,request.getParameter("message");得到的还是ISO-8859-1字符集,所以要转换一下。



##############################################################################################################################################


二 从前台页面用URL网后台Action中传递中文参数:

这里提供一个解决方案,基本原理就是在JS中将中文转码成URI方式,如下:

var queryTitle = document.getElementById('queryTitle').value;
queryTitle=encodeURI(queryTitle);
queryTitle=encodeURI(queryTitle); 需要转2次
这个不知道那个脑残设计的,靠
然后在后台获取的时候,解码URI:

String newTitle = request.getParameter("newTitle");
newTitle = https://www.sodocs.net/doc/857663808.html,.URLDecoder.decode(newTitle, "utf-8");

这样就可以了

即:
在客户端进行再次encodeURI操作,在服务器解码即可。
queryTitle=encodeURI(encodeURI(queryTitle));
queryTitle=encodeURI(encodeURI(queryTitle));
在jquery的ajax提交时会经常使用这种方式提交中文。

相关主题