Java中MySQL 数据库插入中文出错的问题 1366 - Incorrect string value: '\xE5\x9B\xBD\xE5\x93\xA5' for column 'author' at row 1
解决办法:
1 -- 修该表的编码方式 2 ALTER TABLE `t_book` DEFAULT CHARACTER SET utf8; 3 -- 该命令用于将表t_book的编码方式改为utf8;
1 -- 修改字段的编码方式 2 ALTER TABLE `t_book` CHANGE `author` `author` VARCHAR(100) CHARACTER SET utf8 NOT NULL; 3 -- 该命令用于将表test中name字段的编码方式改为utf8
或:
-- ALTER TABLE 表名 MODIFY 字段名 类型(50) CHARACTER SET "utf8"; ALTER TABLE t_book MODIFY name varchar(100) CHARACTER SET "utf8";
========================================分割线================================================
在尝试以上两种方法后,在shell或Navicat可以插入中文,但是并不能从根本上解决问题(Java中保存中文还是出现乱码),
经过一段时间排查,发现问题出在jdbc配置源的编码上。
修改前:
1 username=**** 2 password=******** 3 url=jdbc:mysql://localhost:3306/book 4 driverClassName=com.mysql.jdbc.Driver 5 initialSize=5 6 maxActive=10
修改后:
1 username=**** 2 password=******** 3 -- 修改 4 characterEncoding=UTF-8 5 url=jdbc:mysql://localhost:3306/book?characterEncoding=UTF-8 6 -- 修改 7 driverClassName=com.mysql.jdbc.Driver 8 initialSize=5 9 maxActive=10
问题解决。
#