我在js文件里用Ajax技术发送请求
如
var url = "path?name="+document.getElementById("name").value;
new HTMLRequest().open("GET",url,true);在提交的表单里name的值是汉字。是utf8字符集。我也写了过滤器,所有的字符集都设置为utf8了。
在struts中的action方法里
用请求获取参数name时获取的是乱码。这是怎么回事呢?
如
var url = "path?name="+document.getElementById("name").value;
new HTMLRequest().open("GET",url,true);在提交的表单里name的值是汉字。是utf8字符集。我也写了过滤器,所有的字符集都设置为utf8了。
在struts中的action方法里
用请求获取参数name时获取的是乱码。这是怎么回事呢?
xxx.jsp?&参数=??这个?代表中文,因为get方式提交中文 处理不了,只能传递数字或者字母的数据
var data = "words="+encodeURI(encodeURI(_word)); // 注意,这里把需要提交的中文字符串进行两次encodeURI
xmlhttp.open("post",postAction, true);
xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xmlhttp.send(data);ajax Java 服务器端:
String words= request.getParameter("words");
words= java.net.URLDecoder.decode(words, "UTF-8");通过 URLDecoder.decode 解码后 即可得到正确的中文字符串!
String result = new String(乱码的字符串.getByte(),"utf-8");来得到想要的字符串result,这个是不乱码的。