MySQL 字符集和校对集
Posted YuLong~W
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 字符集和校对集相关的知识,希望对你有一定的参考价值。
字符集
目标:了解字符集的概念,掌握mysql数据库存储数据的字符集逻辑以及设置方式
- 字符集概念
- MySQL字符集关系
- 解决乱码问题
- 字符集设置原理
字符集概念
字符集:charset或者character set,是各种文字和符号在计算机中的总称
- 字符集根据不同国家的符号不同,有不同的字符集
- 不同的字符集占用的存储空间不一样,存储的底层也不一样
- 不同字符集之间可以进行转换
- 常见字符集
- ASCII:美国信息交换标准码,一般英文符号,一个字节存储
- latin1:拉丁文字符集,一个字节存储,ISO-8859-1的别名 ,能够向下兼容ASCII
- GB2312:信息交换用汉字编码字符集 ,是中国1981年的一套国标规范,2个字节存储
- GBK:汉字内码扩展规范(1995年),两个字节表示表示(汉字很多超过5000个)
- Unicode:万国码(统一码),使用统一的编码方式来解决传统的局限,1994年出现
- UTF-8:8-bit Unicode Transformation Format(万国码) ,针对Unicode的可变长度字符编码,采用1-6个字节编码Unicode字符(目前通用编码规则)。建议使用UTF-8字符集进行数据存储(MySQL8中建议使用utf8mb4)
原理流程图:
1、数据存储
2、数据读取
小结
1、字符集是一套符号的总称
2、不同国家地区的符号有区别,所以有自己的字符集
3、常见的字符集目前是三个
- ASCII:美国信息交换标准码
- GBK:汉字内码扩展规范(国标),兼容ASCII
- UTF-8:8字节万国码,兼容GBK和ASCII
4、目前基本都统一使用UTF-8 开发和数据存储
5、字符集是指定字符的存储和读取的规范
- 指定的字符集存储需要使用对应的字符集读取
- 错误的字符集存储或者读取都会产生乱码
MySQL字符集
MySQL字符集:MySQL内部对于数据实际存储的字符集(服务器端)
- MySQL内部对象可以在各个层级设置字符集
- MySQL内部对象存在字符集继承:字段 -> 表 -> 数据库 -> DBMS
- MySQL内部内嵌支持几乎所有主流字符集
- 数据存储的最终字符集由字段控制
- 客户端与服务器进行交互时,需要明确告知服务器客户端自己的字符集(数据格式)
查看MySQL支持的所有字符集:show charset;
原理图:
1、数据库内部对象字符集原理