Java中MySQL 数据库插入中文出错的问题 1366

解决办法:

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

问题解决。

#

原文地址:https://www.cnblogs.com/nuister/p/12637398.html