zoukankan      html  css  js  c++  java
  • docker中mysql 汉字乱码,显示问号

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

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

    img

     

    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)

    img

    这张图片是摘下来的。

     

    上面已经排查了项目,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;

     

    我不是来改变世界的
  • 相关阅读:
    洛谷 P1498 南蛮图腾
    洛谷 P1538 迎春舞会之数字舞蹈
    洛谷 P1112 波浪数
    洛谷 P1102 A−B数对
    数字量化值Digital Number, 辐射亮度Radiance, 反射率Reflectance,发射率Emissive
    ENVI下基于劈窗算法从MODIS数据中反演海表温度
    ENVI 5.1安装教程
    一些链接
    1、GeometryService计算面积和长度(Calculate_Feature_Length_Or_Area)功能实现
    1、GeometryService的缓冲区(Buffer)功能实现
  • 原文地址:https://www.cnblogs.com/notchangeworld/p/15062786.html
Copyright © 2011-2022 走看看