docker中mysql 汉字乱码,显示问号

docker中mysql 汉字乱码,显示问号

1,插入数据后,显示情况如下:

docker中mysql 汉字乱码,显示问号

 

2,排查问题:

分析:乱码一般为编码与解码不一致,通过断点可以断定,汉字入库前正常(idea编码为utf8)

则查看mysql的编码:

mysql编码分为:数据库编码,表编码

首先查看表编码:方便看,自己创建表的时候可以看到:

CREATE TABLE `BLOGTEXT`(
   `blogId` varchar(20) not null COMMENT ‘blogID‘,
   `blogText` varchar(200) default null COMMENT ‘blog内容‘,
  PRIMARY KEY (`blogId`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

或者通过命令行:

mysql> show create table house.BLOG;
......
| BLOG | CREATE TABLE `BLOG` (
 `blogId` varchar(20) NOT NULL COMMENT ‘blogID‘,
 `name` varchar(20) DEFAULT NULL COMMENT ‘blog??‘,
 `description` varchar(20) DEFAULT NULL COMMENT ‘??‘,
 `category` int(2) DEFAULT NULL COMMENT ‘??‘,
 `microContent` varchar(20) DEFAULT NULL COMMENT ‘????????‘,
 `lastUpdate` datetime DEFAULT NULL COMMENT ‘???????‘,
 `createTime` datetime DEFAULT NULL COMMENT ‘????‘,
PRIMARY KEY (`blogId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
?

 

查看数据库编码格式:

mysql> show variables like ‘char%‘;
+--------------------------+----------------------------+
| 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       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)
?

 

可以看到database的编码格式Latin1,这个也就是ISO-8859-1;

修改下编码格式:

怎么修改呢?

因为我这里是通过docker启动的,所以首先进入容器中:id为容器Id

docker exec -it id /bin/bash

执行下面语句:

apt-get update
apt-get install vim

 

但是:突然发现修改数据库连接就可以了,如下所示:

spring.datasource.url=jdbc:mysql://120.53.228.47:3306/house?serverTimezone=UTC&characterEncoding=UTF-8
?

修改的内容为后面新增了编码格式。

 

如果这里修改了数据库还乱骂,则需要继续上面的操作:

修改mysql的配置文件,修改编码格式:(mysql容器中的配置文件的位置:/etc/mysql/mysql.conf.d)

docker中mysql 汉字乱码,显示问号

这张图片是摘下来的。

 

上面已经排查了项目,mysql的数据库,表,还未检查字段,如果还有问题,那么就应该检查字段啦。

 

下面是查询过程中用到的mysql的命令:

查看数据库编码格式:
mysql> show variables like ‘chara%‘;
?
查看数据库表的字符集:
mysql> show create table house.blog;//house为数据库名,blog为表名
?
修改数据库的编码格式:
mysql>alter database <数据库名> character set utf8;
?
修改数据库表编码格式:
mysql>alter table <表名> character set utf8;

 

docker中mysql 汉字乱码,显示问号

上一篇:JDBC


下一篇:thinkphp5.0.15 update、insert sql注入