设置MySQL的字符编码

2023年01月01日 1489点热度 0人点赞 0条评论

1.数据库中中文编码所占字节数:

字符集 字节数
Ascii 1
GB2312 2
GBK 2
utf-8 (utf8mb3) 3
utf-8 (utf8mb4) 4

utf-8(utf-8mb3)和utf-8mb4的区别:

1、utf-8也叫utf-8mb3: 代表一个字符只需要1~3个字节。
2、utf-8mb4: 代表一个字符需要使用1-4个字节,也就是我们平常说的真正的utf-8编码。

区别: 在MySQL数据库中,utf-8是utf-8mb3的别名,它是使用1~3个字节来表示一个字符的,如果需要使用4个字节表示一个字符的,如存储emoji表情包,需要使用utf-8mb4编码方案。

对于MySQL数据库中常见的字符集编码来说,ASCII只用于特定的场合,GBK和GB 2312只能用于中英文混合环境,因此在我们立志于国际化的公司,肯定是只能使用unicode编码,为了更好的支持emoji表情,所以我们的数据库绝大多数(之所以不是全部,是因为有些老系统之前没有给出字符集编码的规范)使用utf-8mb4,建库建表默认强制使用utf-8mb4

2.登录到MySQL

mysql -h127.0.0.1 -uzy -p --ssl-ca=./ca-cert.pem --ssl-cert=./client-cert.pem --ssl-key=./client-key.pem

3.查看数据库的字符编码

4.查看数据库的详细编码

show variables like '%char%';

5.设置当前窗口的数据库字符编码

即使基于会话session级别的,关闭此窗口,重新打开另外的窗口操作数据库依然是原来的字符编码

set character_set_database=gbk;
set character_set_server=gbk;
show variables like '%char%';


我们发现database和server都变成了gbk,此方法也适用于程序中,比如在PHP连接数据库成功后马上执行上面的设备字符编码指令。

6.设置全局的数据库字符编码

即使基于整个MySQL服务的,当重启MySQL服务的时候,编码依然会变为原来的字符编码,但重启数据库服务器后会失效。

set global character_set_database=gbk;
set global character_ser_server=gbk;

7.设置永久的字符编码

编辑数据库配置文件 /etc/my.cnf

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

然后重启数据库即可

systemctl restart mariadb

路灯

这个人很懒,什么都没留下

文章评论