Struts2中的乱码问题小结
乱码是个让人头疼的问题,往往在我们的项目做得兴高采烈的时候突然跳出来这样那样的乱码问题,搞的我们头都大了!!!下面就我实际开发中遇到的乱码问题简单小结一下。
1、
在比如jsp页面中显示中文时往往会出现乱码问题,不过这种问题还比较好解决。在jsp页头加上<% @
即可。注意最好整个项目编码都统一,一般统一为utf-8或者gbk或者gb2312。
2、
有时候页面之间跳转传递参数,或者网数据库中插入数据,尤其是在用MYSQL数据库时,经常出现乱码问题,这时候除了按照上面的统一编码以外,还可能需要一些其他操作。
首先,在struts.xml加入一句话
<constant name="struts.i18n.encoding" value="gb2312"/>,这就 相当于我们在页面中setCharacterEncoding(“gb2312”),一般就可以解决了。因为struts2默认的字符集是utf-8,这里实际是改动struts2的默认字符集。这里要注意使用的数据库编码还要与之一致,不同的数据库不同,MySql的设置字符集的方式为:
alter database 数据库名 character set utf-8/gb2312;
如果还不行,那么就在进入下面几步:
一,进入tomcat中conf文件夹下找到server.xml文件,找到<Connector
connectionTimeout="20000"
redirectPort="8443"
在其中加上
二、编写过滤器Filer
编写一个过滤器,实现javax.servlet.Filter接口中的doFilter()方法,将页面获取的参数再进行一次编码,如下代码:
package util;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class CharsetFilter implements Filter {
}
三、在web.xml中加入配置文件,配置该Filter:
<filter>
<filter-name>characterEncoding</filter-name>
然后重启Tomcat,再测试,应该就差不多了。
3、
Str=new String(str.getBytes(“iso-8859-1”), ”gb2312”);,则一般都能解决该问题。你需要做的就是将这个方法添加到合适的位置即可。
4.如果这样还是解决不了,那真该好好分析分析了,不要着急,可以设置断点,或者在合适的地方System.out.println();找出参数出现问题的根源,在去寻求其他办法,应该总能解决吧!