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