微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MySQL中文乱码

 


 

一、中文乱码案例

1.1.发现乱码:

MariaDB [relay01]> select * from relay_test;
+------+------+
| id   | city |
+------+------+
|    1 | ??   |
+------+------+
1 row in set (0.00 sec)

 1.2.查看字符集

检查表的编码格式:
MariaDB [relay01]> show create table relay_test\G
*************************** 1. row ***************************
       Table: relay_test
Create Table: CREATE TABLE `relay_test` (
  `id` int(10) DEFAULT NULL,
  `city` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1

检查MysqL支持的字符集:
MariaDB [(none)]> show variables like '%character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/MysqL/charsets/ |
+--------------------------+----------------------------+

检查数据库实例对应的编码:
MariaDB [relay01]> show create  database relay01;
+----------+--------------------------------------------------------------------+
| Database | Create Database                                                    |
+----------+--------------------------------------------------------------------+
| relay01  | CREATE DATABASE `relay01` /*!40100 DEFAULT CHaraCTER SET latin1 */ |
+----------+--------------------------------------------------------------------+
1 row in set (0.00 sec)

二、解决中文乱码

2.1.设置认编码utf8:

[root@master01 ~]# cat /etc/my.cnf
添加两行代码:
[MysqLd]
#解决中文乱码
init-connect='SET NAMES utf8'
character-set-server = utf8
重启数据库
[root@master01 ~]# systemctl restart mariadb.service 

2.2.登录数据库操作

进行如下五步操作:
将涉及的数据库的表手动修改字符集
1.查看当前数据库字符集:
show VARIABLES like 'character%';
2.修改数据库字符集:
alter database 数据库名 character set utf8mb4;
3.修改表字符集:
ALTER TABLE  表名 DEFAULT CHaraCTER SET utf8 COLLATE utf8_general_ci;
4.修改涉及的字段认字符集:
--如果不修改字段属性,之前认的字段编码方式可能是latin1
alter table relay_test modify 字段名varchar(10); 
5.测试验证(发现已经解决乱码问题):
MariaDB [relay01]>  select * from relay_test;
+------+--------+
| id   | city   |
+------+--------+
|    1 | ss     |
|    1 | 宿舍   |
+------+--------+
2 rows in set (0.00 sec)

MariaDB [relay01]> 

2.3.检查编码格式

MariaDB [(none)]> show variables like 'character%'
    -> ;
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/MysqL/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

 

 


 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐