Mysql Hibernate Struts Tomcat中文问题解决方法
Mysql 的版本经常变化,对字符集的支持也是经常变化;mysql 的 JDBC Driver的版本也经常变化,而且mysql JDBC Driver本身也不完善,不仅仅是中文问题。本文介绍一个特定环境的中文处理办法,思想是在所有的地方都一致的使用GBK编码。
环境:
struts+tiles+hibernate+mysql4.0.17+tomcat5.0.19+mysql-connector-java-3.1-nightly-20040602-bin.jar
注意:JDBC Driver版本必须是3.1,驱动程序很重要!
JSP的字符集
所有的JSP第一行加入:
<%@ page contentType="text/html;charset=GBK" %>
在Web应用加入Filter
a)在web.xml里加入如何配置
<filter>
<filter-name>filter</filter-name>
<filter-class>com.common.web.RequestFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>filter</filter-name>
<servlet-name>action</servlet-name>
</filter-mapping>
b)在RequestFilter里如下编码
public void doFilter( ServletRequest request, ServletResponse response,
FilterChain chain )
throws IOException, ServletException {
if ( encoding != null ) {
request.setCharacterEncoding( encoding ) ;
} else {
request.setCharacterEncoding( "UTF-8" ) ;
}
chain.doFilter( request, response ) ;
}
Hibernate的数据库连接配置
Hibernate:hibernate.cfg.xml
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://127.0.0.1/test?useUnicode=true&characterEncoding=GBK</property>
<property name="hibernate.connection.username">root</property>
修改server.xml
打开tomcat的server.xml文件,找到区块,加入如下一行:
URIEncoding=”GBK”
完整的应如下:
<Connector
port="80" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups= "false" redirectPort="8443" acceptCount="100"
debug= "0" connectionTimeout="20000"
disableUploadTimeout= "true"
URIEncoding= "GBK"
/>