JSP jqgrid传中文参数 JAVA接收为乱码 问题处理

JSP页面,将form表单所有参数序列化,作为jqgrid表格的url参数进行查询,其中传入的有中文参数:

       var param = $("#form1").serialize();
       var url = "findWhiteListByCondition.action?" + param;

       $("#gridTable").jqGrid({
                url: url,
                datatype: "json",

                 ……

结果显示Action收到的变量值,中文已经变成乱码。无法进行模糊查询。

然后上网百度,从以下这个帖子找到了灵感:

中文乱码在java中URLEncoder.encode方法要调用两次解决   http://blog.csdn.net/kongqz/article/details/9028111

 

里面说,因为在jsp中对中文进行编码的时候用的是UTF-8的编码方式,而在servlet中调用request.getParameter()方法之前会
      自动使用服务器指定的编码格式做一次解码的工作(默认的ISO-8859-1)。两种方式不同,导致出现乱码。

于是想到,按照这个过程,进行逆向处理,先进行ISO-8859-1编码,再进行UTF-8解码:

   String name = java.net.URLEncoder.encode(orgShortName, "ISO-8859-1");;
   System.out.println("编码后:" + name);
   name = java.net.URLDecoder.decode(name, "UTF-8");
   System.out.println("解码后:" + name);

   测试结果,JSP输入值为:嘉兴
   JAVA执行得到: 

  编码后:%E5%98%89%E5%85%B4   
  解码后:嘉兴
  成功变回来了!!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值