因为在jsp中对中文进行了编码的时候用的是UTF-8的编码方式,而在servlet中调用request.getParameter();方法的时候使用服务器指定的编码格式自动解码一次,所以前台编码一次后台解码一次而解码和编码的方式不用所以造成了乱码的出现;
解决方法一:
window.self.location="searchbytext.action?searchtext="+encodeURIComponent(encodeURIComponent(seartext));
Java:
searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");
为什么要两次编码的原因:后台java代码给searchtext赋值的时候,本身已经使用了一次解码,不过解码的结果依然不对。所以我们可以在页面上进行两次编码操作,这样后台自动的那次就可以抵消掉一次,然后在使用searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");进行一次解码就好了。
(ps:不行就多转几次 多试几次 这个就是一个坑
fileNameTemp= java.net.URLDecoder.decode(fileNameTemp,"UTF-8");
//System.out.println(fileNameTemp);
fileNameTemp= java.net.URLDecoder.decode(fileNameTemp,"UTF-8");
)
解决方法二:
另外还有一种方法是JavaScript进行一次编码,后台java处理时换种想法就好了:
java代码:
String s = new String(request.getParameter("name").getBytes("ISO8859-1"), "UTF-8");