Hibernate+mysql 中文问题解决方案.

1. mysql安装时设置字符集utf-8, jdbc驱动3.0.15以上.
2. hibernate配置文件中,加上属性
<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 > cn.com.commnet.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
public   class  SetEncodeFilter implements Filter  {

    
protected FilterConfig filterConfig = null;

    
protected String defaultEncoding = null;

    
/**//* (non-Javadoc)
     * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
     
*/

    
public void init(FilterConfig arg0) throws ServletException {
        
// TODO Auto-generated method stub
        this.filterConfig = arg0;
        
this.defaultEncoding = filterConfig.getInitParameter("defaultencoding");
    }


    
/**//* (non-Javadoc)
     * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
     
*/

    
public void doFilter(
        ServletRequest request,
        ServletResponse response,
        FilterChain chain)
        throws IOException, ServletException 
{
        
// TODO Auto-generated method stub
        request.setCharacterEncoding(selectEncoding(request));
        chain.doFilter(request, response);
    }



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



    
protected String selectEncoding(ServletRequest request) {

        
return this.defaultEncoding;
    }


}

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