Hibernate+mysql乱码问题终极解决方案

1, mysql安装时设置字符集utf-8(包括数据库字符集,以及表的字符集), jdbc驱动用最新的
2. hibernate配置文件(hibernate.cfg.xml)中,加上属性
<property name="connection.useUnicode">true</property>
<property name="connection.characterEncoding">UTF-8</property>

3. web.xml设置Filter
=================================================
<filter>
  <filter-name>
   Set Web Application Character Encoding
  </filter-name>
  <filter-class>com.util.SetEncodeFilter</filter-class>
  <init-param>
   <param-name>defaultencoding</param-name>
   <param-value>UTF-8</param-value>
  </init-param>
 </filter>
 <filter-mapping>
  <filter-name>
   Set Web Application Character Encoding
  </filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

=============================================
SetEncodeFilter.java

 

 1package com.util;
 2
 3import java.io.IOException;
 4
 5import javax.servlet.Filter;
 6import javax.servlet.FilterChain;
 7import javax.servlet.FilterConfig;
 8import javax.servlet.ServletException;
 9import javax.servlet.ServletRequest;
10import javax.servlet.ServletResponse;
11
12public class SetEncodeFilter implements Filter {
13    
14    protected FilterConfig filterConfig = null;
15
16    protected String defaultEncoding = null;
17
18    /** *//**//* (non-Javadoc)
19     * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
20     */
21    public void init(FilterConfig arg0) throws ServletException {
22        // TODO Auto-generated method stub
23        this.filterConfig = arg0;
24        this.defaultEncoding = filterConfig.getInitParameter("defaultencoding");
25    }
26
27    /** *//**//* (non-Javadoc)
28     * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
29     */
30    public void doFilter(
31        ServletRequest request,
32        ServletResponse response,
33        FilterChain chain)
34        throws IOException, ServletException {
35        // TODO Auto-generated method stub
36        request.setCharacterEncoding(selectEncoding(request));
37        chain.doFilter(request, response);
38    }
39
40
41    public void destroy() {
42        
43        this.defaultEncoding = null;
44        this.filterConfig = null;
45    }
46
47
48    protected String selectEncoding(ServletRequest request) {
49
50        return this.defaultEncoding;
51    }
52
53}
4.提交表单的jsp页面设置
<%@ page language="java"  contentType="text/html; charset=UTF-8"%>

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/cdredfox/archive/2006/09/18/1236347.aspx

你可能感兴趣的:(mysql,Hibernate,Web,servlet,jdbc)