Tomcat+Mysql中文乱码解决方法

      在tomcat+mysql开发中,中文乱码问题是一个比较常见的问题,在查询网络相关资料后,我把我的实践经验总结于本文。本文主要解决页面乱码和数据库乱码2个问题。

1、页面乱码。

1) 编写一个过滤器。

public class SetCharacterEncodingFilter implements Filter {

// 。。。

public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain) throws IOException, ServletException {

         RequestWrapper wrappedRequest = new RequestWrapper((HttpServletRequest) request);
        ResponseWrapper wrappedResponse = new ResponseWrapper((HttpServletResponse) response);
        wrappedRequest.setCharacterEncoding("GBK");
        doBeforeProcessing(wrappedRequest, wrappedResponse);
        chain.doFilter(wrappedRequest, wrappedResponse);
 //add your code

}

2)配置web.xml
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>SetCharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

2、数据库乱码。

方法1:我使用MySQL Tools for 5.0客户端管理工具,在建表的时候,选择Table Option标签设置其中的Character Set属性为gb2312即可。

方法2:利用数据源连接数据库,在context.xml中设置资源:

<Resource name="jdbc/testDB"
auth="Container"
type="javax.sql.DataSource" />

<ResourceParams name="jdbc/testDB">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>


<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>

<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value>yourpw</value>
</parameter>

<!-- Class name for mm.mysql JDBC driver -->
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value><![CDATA[jdbc:mysql://localhost:3306/workshopdb?useUnicode=true&amp;characterEncoding=GBK]]></value>
</parameter>
</ResourceParams>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值