[原创] Java WebApp 中的 MySql 中文乱码问题

  最近在做 Java WebApp 的过程中总结 Hibernate 与各种数据库的连接与操作的时候中遇到了不少问题,也获得了不少经验,其中,JSP 插入 MySql 中文乱码问题应该是不少 Progammer 都遇到过的,所以我把解决这个问题的一些技巧和注意问题记录下来,以供参考。

  首先,要提到的是 MySQL 4.1 对多语言的支持有了很大变化,开始提供对 Unicode 编码的支持,这里我推荐大家使用 UTF-8 编码来加强 Java 项目对多语言的支持。然而,就是这个编码的问题还是让不少人头疼不已,其实,我们所要做的就是让页面显示和数据库的编码统一罢了,一点也不复杂 ...


  首先,我在 JSP 页面加上 来强制页面显示 UTF-8 字符。然后,我给 webapp 加入了一个 Filter 来过滤提交过程中出现的乱码字符,具体 Filter 的相关程序以及配置如下:

EncodingFilter.java

import  java.io.IOException;
import  javax.servlet.FilterChain;
import  javax.servlet.ServletRequest;
import  javax.servlet.ServletResponse;
import  javax.servlet.Filter;
import  javax.servlet.http.HttpServletRequest;
// import javax.servlet.http.HttpServletResponse;
import  javax.servlet.ServletException;
import  javax.servlet.FilterConfig;

public   class  EncodingFilter  implements  Filter {

protected FilterConfig filterConfig;
private String targetEncoding = null;

public void init(FilterConfig config)throws ServletException{
this.filterConfig = config;
this.targetEncoding = config.getInitParameter("encoding");
}


public void doFilter(ServletRequest srequest,ServletResponse sresponse,FilterChain chain)throws IOException,ServletException{
// System.out.println("doFilter : encoding=" + targetEncoding);
HttpServletRequest request=(HttpServletRequest)srequest;
request.setCharacterEncoding(targetEncoding);

chain.doFilter(srequest,sresponse);
}


public void setFilterConfig(final FilterConfig filterConfig){
this.filterConfig=filterConfig;
}


public void destroy(){
this.filterConfig=null;
}

}

在 web.xml 加入如下配置:

<filter>
<filter-name>encoding</filter-name>
<filter-class>EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

  配置好 Filter 后,我们在 Mysql Server 端的配置文件 my.cnf(my.ini)中的 [mysqld] 下加入 default-character-set =utf8 并放到 /etc 目录下,重启 MySql 服务,你也可以用 show variables 命令查看一下刚才的配置时候已经生效。完成以上步骤之后你就可以放心的向 MySql 中插入或抽取数据了,OK :)

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值