国际标准化组织 iso
GBK 全称<汉字内码扩展规范> 发布于 1995 年;
GBK 不是一个强制性的国家标准,只是一个行业指导规范,并没有强制力,但由于得到了 Microsoft windows 95的支持而大为流行;
Mysql支持 几十种字符集;应该如何选择呐,有以下可以参考:
- 如果需要支持各种语言,文字,或作发布使用不同语言或国家,mysql目前使用UTF-8;
- 需要考虑已有数据,如果已有数据,需要考虑字符集的兼容性,就是后来设置的字集要比之前使用的字集范围大;
- 如果只需要支持一般中文,并且数据量很大,性能要求很高,用gbk比较合适,因为gbk一个汉字占2个字符,utf8 占3个字符;满足需求的情况下gbk可以减少存储占用,提供检索效率;
- 如果只有少量汉字,主要处理英文 则建议选择UTF8;因为 utf8 英文只占一个字符;gbk英文占2个字符;所以会大大减少存储的大小;
- 如果客户端需要支持相同的字符集,则可以设置服务器级别的字符集:
在my.cnf 中配置 character-set-server = uft-8; uft-8 只是示例,可以设置自己需要的字符集;
Oracle在同一数据库只能使用一种字符集,mysql 支持字符集涉及的级别有:服务器级别,数据库级别,表级别,列(字段)级别;所以MySQL在字符集设置上比oracle更灵活
查看所有可用(支持)的字符集:截图可以看到字符集的种类非常非常多;
Show character set;
Mysql字符集包括 存储字符集和校验规则;
存储字符集就是指数据存储字符串的方式;
校验规则就是用来定义比较字符串的方式。字符集和校验规则是一对多的关系;
可以用 show collation like ‘utf-8%’
查看校对规则: 查询后没什么结果。。
也可以用 desc information_schema.CHARACTER_SETS 查看字符集和该字符集默认的校对规则;
校对规则命名规范: 第一个是字符集的名称开始 ,然后是 语言名称,最后是三种类型
_ci(大小写不敏感) _cs(大小写敏感) _bin(二元,即比较是基于字符集编码的值而与language无关【对大小写敏感】) ;例如 gbk_chinese_ci ;
mysql 支持字符集涉及的级别有:服务器级别,数据库级别,表级别,列(字段)级别;
查看服务级别的编码设置:show VARIABLES like 'character_set_server';
查看数据库的编码字符集:show VARIABLES like 'character_set_database';
查看当前数据库的校对规则:
show VARIABLES like 'collation_database';
如果对表进行字符集的修改,表已存在的数据不会影响,还是以原来的字符集进行存放;
查看表的字符集和校对规则,可以用show create table 表名;