在js中通过location.href方式跳转页面并在路径上传递参数中文乱码解决
路径1: location.href="<s:url action='indexUI' namespace='/qiantai' />?name=这里传入中文";
上面这种方式的话在action在获取name的值的话如果是中文就会出现乱码.
解决方式是:
先在js中将传递的中文进行编码:通过js的encodeURI函数对值进行两次(经过测试需2次)编码;
location.href="<s:url action='indexUI' namespace='/qiantai' />?name="+encodeURI(encodeURI(searchval));
在action中获取时需要通过URLDecoder.decode(name, "UTF-8");方式进行解码即可.
路径2: $.getJSON("<s:url namespace='/product' action='list' />",{ name: '中文'}, function(data){});
ajax这种方式的话在action中获得name的值也会出现乱码.
解决方式是:
通过js的encodeURI函数对值进行一次(经过测试只需1次)编码:
$.getJSON("<s:url namespace='/product' action='list' />",{ name: encodeURI(searchval)}, function(data){});
同样在action中获取时需要通过URLDecoder.decode(name, "UTF-8");方式进行解码即可.
这样的话就可以解决路径传递中文乱码的问题,当然这只是其中一种方式,还有其他很多方式大家可以多尝试.