MySQL入门教程(25)字符集、排序规则与大小写问题
一、MySQL字符集说明
字符集用来定义数据在数据库中的格式,在MySQL5.7或之前版本中默认的字符集是latin1,其它常见的字符集有UTF8、UTF8MB4、GBK、ASCCI等。而每种字符集有一个与该字符集对应的默认校对规则(也叫排序规则),校对规则的名字以字符集名开始并以_ci(不区分字段数据大小写)或_cs(区分字段数据大小写)或_bin(二进制,区分字段数据大小写)结束。比如utf8字符集默认校对规则是utf8_general_ci。字符集和校对规则根据级别分为服务器级、数据库级、表级和会话级,低级默认继承上级的设置。保证不乱码的主要思想就是客户端与服务器端字符集统一,库表字符集统一,浏览器字符集统一,程序字符集统一
· MySQL字符集相关参数
character_set_server:实例级别的默认字符集设置,通常配置它即可
collation_server:默认的字符集的排序规则
character_set_database:库级别的默认字符集,可不配置
character_set_system:系统级别的默认字符集设置,可不配置
mysql > show variables like "character%";
· 查看当前MySQL所支持的字符集以及当前所使用的字符集
mysql > show character set;
二、MySQL字符集修改方法
· 使用set names语句临时修改字符集
mysql > set names utf8mb4;
· 导入数据库文件时指定默认字符集
mysql -uroot -p --default-character-set=latin1 testdata <testdata.sql
· 在创建数据库或者表的时候指定字符集和校对规则。
mysql > CREATTE DATABASE databasename DEFAULT CHARACTER SET UTF8 DEFAULT COLLATE utf8_general_ci;
· 在my.cnf配置文件里指定默认字符集
cat /etc/my.cnf [client] default-character-set=utf8mb4 [mysqld] character-set-server=utf8mb4 skip-character-set-client-handshake=1 #客户端也使用服务端的字符集,不用再单独为客户端做设置 mysql > set global character_set_server=utf8mb4; #全局临时设置
· 对于已经存在的表格修改字符集时需要额外的CONVERT操作将以前的数据进行转换
#下面的语句执行后虽然将表字符集修改为UTF8MB4,但是历史数据字符集并不会修改 ALTER TABLE emoji_test CHARSET utf8mb4; #修改整张表字符集的做法 ALTER TABLE emoji_test CONVERT TO CHARSET utf8mb4;
版权声明:本文章版权归数据库运维网(www.ywdba.cn)所有。如需引用本站内容,请注明来源及作者。
评论