【MySQL】乱码问题处理

问题背景

在实际生产过程中,会遇到各种各样的乱码问题。针对这些乱码问题,进行汇总归类。

相关原理

关于变量

MySQL中涉及字符集相关的变量一共有8个。

【1】

character_set_client

客户端

【2】character_set_connection
【3】character_set_database
【4】character_set_filesystem
【5】character_set_results
【6】character_set_server
【7】character_set_system
【8】character_sets_dir

以下参数值是由客户端每次连接进来设置的,和服务器端没关系

  • 【1】character_set_client
  • 【2】character_set_connection
  • 【5】character_set_results

关于制定字符集的方式

客户端有两种方式指定字符集,一种在进入Session后指定字符集,另外一种是在客户端发起连接的时候制定字符集。

1. 在会话中指定字符集

我们登陆进mysql后,执行 set names utf8 后; 实际就是同时修改上面的这3个参数值的

MariaDB [(none)]> set names utf8;
Query OK, 0 rows affected (0.00 sec)

执行命令后就是修改了这3个参数

2. 发起会话的时候制定字符集

如果想要告诉server端指定的字符集,在client端在发起连接的时候添加 --default-character-set=xxx 

mysql -pxxx --default-character-set=latin1 -e "show variables like '%char%';"

如果上述不起作用的话,像如下这样。

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

这时候需要修改server端的配置文件了

cat /etc/my.cnf.d/client.cnf

[client]
default-character-set = utf8mb4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值