mysql字符集
看到一个关于mysql字符集的文章,写得很好,原文地址:https://www.cnblogs.com/chyingp/p/mysql-character-set-collation.html
下面再补充一些小细节。
-
charset和character set的区别
charset是character set的简写
character set 'UTF8' character set UTF8 charset 'UTF8' charset UTF8
上面四个得出的结果是一样的。设置表级别的字符集时可以写等号,如
character set=UTF8
,设置列级别字符集时不能写等号。
下面两个相同(列级)`str` varchar(11) character set utf8mb4 collate utf8mb4_general_ci
`str` varchar(11) charset utf8mb4 collate utf8mb4_general_ci
下面两个相同(表级)
CREATE TABLE `tb` (column_list) DEFAULT character set [=] utf8mb4 collate utf8mb4_general_ci;
CREATE TABLE `tb` (column_list) DEFAULT charset [=] utf8mb4 collate utf8mb4_general_ci;
-
各种字符集占用的字节数
Charset Description Default collation Maxlen (最大字节数) latin1 cp1252 West European latin1_swedish_ci 1 ascii US ASCII ascii_general_ci 1 gb2312 GB2312 Simplified Chinese gb2312_chinese_ci 2 gbk GBK Simplified Chinese gbk_chinese_ci 2 utf8 UTF-8 Unicode utf8_general_ci 3 utf8mb4 UTF-8 Unicode utf8mb4_general_ci 4 mysql的字符序遵从命名惯例:
以_ci(表示大小写不敏感)
以_cs(表示大小写敏感)
以_bin(表示用编码值进行比较)
mysql的默认字符集是:latin1,查看mysql默认字符集:
SHOW VARIABLES LIKE 'character_set_server';
在实际的应用中,如果不存储中文,用latin1就足够了;如果要存储中文,就用utf8mb4。utf8mb4是一种最常用的方式,它可以存储中文、特殊符号和表情符号。