hibernate 的中文乱码解决方法
发布时间: 2012-10-11 10:16:10 作者: rapoo
hibernate 的中文乱码解决办法
我用 hibernate Synchronizer 时,在读出和写入数据的时候出现乱码。
解决办法有两种:
第一种办法:分两步:
1、解决保存到数据库时出现的乱码问题。在 hibernate.cfg.xml 中添加两行:
<property name="connection.useUnicode">true</property>
<property name="connection.characterEncoding">gbk</property>
这样,当数据保存时就不会出现乱码。
2、解决从数据库读出数据时的乱码问题。在读出数据后把数据转换为 gbk 编码。
如: new String(getName().getBytes("ISO8859_1"),"gbk"),这时生成的 String 就是可以正常显示的中文了。
第二种办法:(来自:http://www.cnblogs.com/josson/archive/2005/03/16/119619.html)
<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;?

????}?

?

}