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"%>