報錯信息如下:
java.sql.SQLException: Incorrect string value: '\xE5\x88\x98\xE6\x97\xAD...' for column 'Name' at row 1 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1084) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4232) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4164) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2615) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2776)
出現這個錯誤原因:
數據庫的編碼格式為latin1,而需要插入到數據庫中的中文卻是utf8。
解決辦法:
1查看數據庫編碼格式:
show variables like 'character%';
2查看數據庫表的編碼:
show create table <表名>;
3 修改數據庫的編碼:
alter database <數據庫名> character set utf8;
4 修改數據庫某表的編碼:
alter table <表名> character set utf8;
5 修改數據庫某表的某一字段的編碼:
alter table <表名> change <字段名> <字段名> <類型> character set utf8;
舉例:
mysql> show databases; mysql> use testdb; mysql> show tables; mysql> show create table factory_list; mysql> alter table factory_list character set utf8; Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> alter table factory_list change Name Name varchar(256) character set utf8; Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0