js跳转页面传参,参数值包含中文时显示乱码解决方案

1、首先我们需要在js中进行中文转码处理,需要进行encode两次转码。不然还是会出现乱码,至于为什么需要两次,我这里上网查了一下,因为Tomcat服务器会自动帮你做一次URLDecode,所以再加上你自己在代码里面写的URLDecode,一共就是两个Decode了,既然要两次Decode,当然就需要两次Encode了。或许你会问,干脆只Encode一次,然后在java代码里不Decode,呵呵,这个也是不行的,至于为什么这样不行我还没找到比较合适的答案来解释这个问题了,,这其实也就是为什么要进行Encode的原因吧。

    var msg = "提交调研失败...";

    rjson.img = "img/training_icon_cry.png";
    //中文会乱码,只能encode再encode
    rjson.msg = encodeURI(encodeURI(msg));

    location.href="train/paper/redirectResultPage?json="+JSON.stringify(rjson);

2、然后在后台java代码中进行url解码处理,注意:需要在跳转页面之前进行解码处理,可以通过下面这种方式。

 //当然页面的编码格式也需要是UTF-8的格式才行
    java.net.URLDecoder.decode(value , "UTF-8");

例如:

   this.setAttr("img", img);
   //解决中文乱码问题
   this.setAttr("msg", URLDecoder.decode(msg, "UTF-8"));

   /**返回至/train/trainResult.jsp页面*/
   renderJsp("/train/trainResult.jsp");

3、做完这两个操作之后,一般情况下中文就会正常显示了,至于其他的特殊情况或者更为复杂的情况目前还没有遇到过,等遇到的时候再去研究吧,目前暂且就记录这么多了。。

原文出处:http://blog.csdn.net/southcamel/article/details/7703317

你可能感兴趣的:(jQuery学习系列)