一、表单提交乱码解决方法
表单中含有中文提交乱码,对于字母和数字则不会乱码,我选用的字符集utf-8(以下同)。
1、在apache-tomcat-6.0.18/webapps/examples/WEB-INF/classes/filters目录下找到文件SetCharacterEncodingFilter.java 和RequestDumperFilter.java文件,并将其复制到项目src下的filters包中。
2、在Web.xml中加入filter。
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf8</param-value>
</init-param>
</filter
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3、在jsp页面中加入两行代码:
<%@ page contentType="text/html;charset=UTF-8"%>
<meta http-equiv="contentType" content="text/html;charset=utf-8">
二、MySQL数据库字符集解决方法
1、修改MySql安装目录下的my.ini文件
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8
修改之后保存。
2、在MySQl客户端输入命令
mysql> status 查看数据库字符集设置
如果显示如下:
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
则数据库字符集设置正确。
如果不是上述结果,可以用命令来设置字符集,命令如下:
mysql> SET character_set_Server = x;
其中的x就是设置的字符集
3、在hibernate.cfg.xml文件中加入
<property name="connection.useUnicode">true</property>
<property name="connection.characterEncoding">UTF-8</property>
修改connection.url
<property name="connection.url">jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8</property>
注意&这是容易出错的地方。