1.汉字一些常用的字符集
GB 2312-80
GB 13000
GBK
GBK 18030
2.怎样选择合适的字符集
如应用要处理各种各样的文字,就应该选择 Unicode MySQL用户 目前就是utf-8
如果数据库只需要支持一般中文,数据量很大,性能要求很高,就应该选择双字节定长编码的中文字符集
如果数据库需要做大量的字符运算,如比较,排序,那么选择定长字符集可能会更好
如果客服端程序都支持同样的字符集,则应该优先选择该字符集
3.MySQL支持的字符集
查看所有可用的字符集
查看information_schema.character_sets,可以显示所有的字符集和该字符集默认的校对规则
MySQL字符集包括字符集和校对规则,字符集和校对规则是一对多的关系。
校对规则命名规范:他们都是以其相关的字符集名开始,通常包括一个语言名,并且以_ci(大小写不敏感)、_cs(大小写敏感)、_bin(二元,即比较是基于字符串编码的值而与language无关)结束。
4.MySQL字符集的设置
MySQL的字符集和校对规则有四个默认设置:服务器级,数据库级,表级,字段级
4.1服务器字符集和校对规则
在my.cnf中设置
将 character-set-server=gbk
在启动项中指定
mysqld —character-set-server=gbk
在编译时指定
shell>cmake . -DDEFAULT-CHARSET=gbk
查看当前服务器的字符集和校对规则
show variables like ‘character_set_server’;
show variables like ‘collation_server’;
4.2 数据库字符集和校对规则
表字符集可在创建库的时候指定,也可以通过 alter database 命令进行修改
alter database character set *
显示当前的数据库的字符集和校对规则
show variables like ‘character_set_database’;
show variables like ‘collation_database’;
4.3表字符集和校对规则
表字符集可在创建表的时候指定,也可以通过 alter table 命令进行修改
alter table character set *
显示表的字符集和校对规则
show create table 表名 \G;
4.4 列字符集和校对规则
使用几率很小
4.5连接字符集和校对规则
对于实际的应用访问来说,还存在客户端和服务器之间的交互的字符集和校对规则设置。
MySQL提供了三个参数:character_set_client(客户端),character_set_connection(连接),character_set_results(返回结果),要保证这三个相同才能保证用户写入的数据可以正确的读出。
set names ***;
#同时修改这三个参数的值,需要应用每次连接数据库后都执行此命令
[mysql]
default-charaction-set=gbk
#在my.ini设置以下的语句,而不需要在程序中再执行set names命令
select _gbk '字符集';
select _latin1 '字符集';
#强制字符串的字符串和校对规则
5.字符集的修改步骤
alter database character set * 没有更新已有记录的字符集