数据库编码格式(查看数据库编码格式)
2023-04-26 · 百度认证:重庆猪八戒网络有限公司官方账号
1.ASCII
用途:用来映射简单的单字节字符,比如大小写英文字母、阿拉伯数字、常用的标点符、运算符、控制字符等。
编码范围:U0000-U007F
注意:对于用这类字符的场景够用了,但是却无法表达比如汉字,日文等编码。
2.UNICODE
用途:用来映射包含ASCII以内的其他的所有字符。
编码范围:U0000-U10FFFF
注意:ASCII是UNICODE的子集,ASCII编码的字符可以无损转换为UNICODE编码的字符。
MySQL常用字符集
1.Latin1
Latin1是cp1252或者ISO-8859-1的别名。ISO-8859-1编码是单字节编码,向下兼容ASCII。
编码范围:U0000-U00FF
ISO-8859-1收录的字符除ASCII收录的字符外,还包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号。
单字节内的空间都被ISO-8859-1编码占用,所以能够用ISO-8859-1编码存储、传输其他任何编码的字节流。
比如把一个Utf8mb4的编码或者GBK的编码存入Latin1,不会有任何问题。因为Latin1保留了原始的字节流,这也就是MySQL长期以来把Latin1做默认字符集的原因。
但是由于Latin1对任何字符都存放字节流,造成了字符个数的浪费。
比如:
CHAR(10)CHARACTERSETLATIN1;CHAR(10)CHARACTERSETUTF8;
该字段中存储字符个数UTF8是Latin1的三倍!!!
2.GB18030
GB18030是中国官方标准字符集,向前兼容GBK、GB2312,是这两个的超集。用1、2、4个字节分别表示一个符号。比如对一般中文字符,默认是用两个字节编码存储。Windows系统,默认用的就是GB18030。
若只是存储中文字符,那GB18030最佳。
原因有两点:
1)占用空间小,比如比UTF8小。
2)存储的汉字根据拼音来排序,检索快。
3.UTF8
UTF8是Unicode的编码实现,可以存储UNICODE编码对应的任何字符,这也是使用最多的一种编码。最大的特点就是变长的编码方式,用1到4个字节表示一个符号,可以根据不同的符号编码字节长度。
字母或数字用1字节,汉字用3字节,emoji表情符号用4字节。UTF8字符集目前是使用最广泛的。
注意!MySQL里常说的UTF8是UTF8MB3的别名,UTF8MB3是UTF8MB4的子集,UTF8MB4才是真正的4字节UTF8字符集!
UTF8MB3表示最大支持3个字节存储字符,UTF8MB4表示最大4个字节存储字符。根据实际需要和未来展望,MySQL8.0已经默认用UTF8MB4基础字符集。