数据,当遇到提交中文信息的时候,问题总是比较多,我见过的出错的情况有两种:
Hibernate flushing: Could not execute JDBC batch update; uncategorized SQLException for SQL [insert into blog (comments, content, createdate, description, tid, title, uid, id) values (?, ?, ?, ?, ?, ?, ?, ?)]; SQL state [HY000]; error code [1366]; Incorrect
string value: '\xA1\xAA\xA1\xAA\xB0\xFC...' for column 'content' at row 1; nested exception is java.sql.BatchUpdateException: Incorrect string value: '\xA1\xAA\xA1\xAA\xB0\xFC...' for column 'content' at row 1
====================
1、JSP页面文件的编码:
2、Struts、Spring配置文件(XML)的编码:
3、Hibernate映射文件的编码:
4、数据源配置中jdbcurl(数据库连接)指定的编码:
5、Mysql默认字符集:
# The default character set that will be used when a new schema or table is
# created and no character set is defined
default-character-set=utf-8
6、数据库表字段的字符集:
级的字符集。
==============问题分析=============
的,因此排除项目中那些与页面文件相关的字符集设置。
查看Mysql默认字符集的相关设置:
+--------------------------+---------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir
+--------------------------+---------------------------------+
指定字符集,因此,创建时均使用Mysql默认的latin1字符集,而这个字符集显然根本不可能处理中文字符,
上面的报错信息就是因为它而产生的。
(1) 最简单的修改方法,就是修改Mysql的my.ini文件中的字符集键值,
如 default-character-set = utf8
character_set_server = utf8
修改完后,重启mysql的服务,service mysql restart。
使用 mysql> SHOW VARIABLES LIKE 'character%';查看,发现数据库编码均已改成utf8
+--------------------------+---------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | D:\Program Files\MySQL\MySQL Server 5.1\share\charsets\ |
+--------------------------+---------------------------------+
(2) 还有一种修改字符集的方法,就是使用mysql的命令
mysql> SET character_set_client = utf8 ;
mysql> SET character_set_connection = utf8 ;
mysql> SET character_set_database = utf8 ;
mysql> SET character_set_results = utf8 ;
mysql> SET character_set_server = utf8 ;
mysql> SET collation_connection = utf8 ;
mysql> SET collation_database = utf8 ;
mysql> SET collation_server = utf8 ;
修改完成后,我重启了应用,再次提交中文,搞定了!