Mysql基础之字符集与乱码

时间:2023-03-09 16:13:47
Mysql基础之字符集与乱码

原文:Mysql基础之字符集与乱码

Mysql的字符集设置非常灵活

可以设置服务器默认字符集

数据库默认字符集

表默认字符集

列字符集

如果某一个级别没有指定字符集,则继承上一级.

以表声明utf8为例:

存储的数据在表中,最终是utf8;

Mysql基础之字符集与乱码

1:告诉服务器,我给你发送的数据是什么编码的? character_set_client

2:告诉转换器,转换成什么编码? Character_set_connection

3:查询的结果用什么编码? Character_set_results

如果以上3者都为字符集N, 则可以简写为 set names N

推论: 什么时将会乱码?

1: client声明与事实不符

2:results与客户端页面不符的时候.

什么时间将会丢失数据?

Connetion和服务器的字符集比client小时.

Mysql基础之字符集与乱码

校对集: 指字符集的排序规则

一种字符集可以有一个或多个排序规则.

以Utf8为例, 我们默认使的utf8_general_ci 规则,也可以按二进制来排, utf8_bin

Mysql基础之字符集与乱码

怎么样声明校对集?

Create table ()... Charset utf8 collate utf8_general_ci;

注意:声明的校对集必须是字符集合法的校对集.