下午做程序,突然发现从前台传参到后台总是出现乱码问题,按照网上的解决了一下,还是不能正常运行。而且比较奇怪的是在文本框输入一个字,乱码;两个字,正常;三个字,乱码;。。。。。。这就是我们所说的奇数乱码,偶数正常,解决过程实在是令人崩溃,折腾了一个下午。
解决方法:这里首先把情况描述一下,假设有a.jsp、b.jsp页面和Test.class类,a页面有姓名文本框,b页面接收a页面提交的参数,在b页面有代码块调用Test类的方法,完成查询。
如何解决呢?
首先,把a页面的编码格式设置为gbk,在代码块中设置为utf-8,即:request.setCharacterEncoding("utf-8");,在b页面同样进行此操作。
然后,b页面接收a页面的参数,即:String name = request.getParameter("name"); ,比较关键的一步来了,这个时候要进行转码处理,即
name = URLEncoder.encode(name,"utf-8"); ,然后调用Test类的doTest(name)方法,第二步结束。
最后,在后台Test类的doTest(name)方法中,进行解码,即:URLDecoder urlDecode = new URLDecoder();
name = urlDecode.decode(name,"utf-8");,这个时候乱码基本上就搞定了。
注:大致的思路是这样,具体的请参考自己的程序作相应修改。