MySQL字符集设置

MySQL有两个字符集概念:一个就是字符集本身,一个是字符集校验规则。字符集影响数据在传输和存储过程中的处理方式,而字符集校验则影响ORDER BY和GROUPBY这些排序方式。


相关参数


mysql> show variables like 'char%';


mysql> show variables like 'collation%';


MySQL(4.1以后版本)服务器中有六个关键位置使用了字符集的概念,他们是:client、connection、results、database、server、system。


1.和存储有关的


MySQL中默认字符集的设置有四级:服务器级,数据库级,表级,字段级。

 

服务器字符集(character_set_server)

库字符集(character_set_database)

表字符集

字段字符集

 

character_set_server:

服务器安装时指定的默认字符集设定。

character_set_database:

数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装时指定的字符集设置。

查看表级设置:

mysql> show create table tbl;

查看字段级设置:

mysql> show full columns from tbl;

 

在创建一个表的时候,每个字段只要不是binary,都会有一个字符集。如果不指定,那么在SHOW CREATE TABLE的时候,它会显示出来。

建表时候,系统选取字段字符集的策略如下:

if 字段指定的字符集

else if 表指定的字符集

else if character_set_database

else character_set_server(如果没有设定,这个值为latin1)


2.和传输有关的


character_set_connection:连接数据库的字符集设置类型

character_set_results:数据库给客户端返回时使用的字符集设定

character_set_client:客户端使用的字符集

它们受客户端默认字符集影响。


3.字符集的校对规则


字符集的校对规则设定分别由上面的collation_connection, collation_database, collation_server决定。

collation_server:服务器的默认校对规则。

collation_database:数据库默认使用的校对规则。当默认数据库改变时服务器则设置该变量,如果没有默认数据库,变量的值同collation_server。

collation_connection:连接字符集的校对规则。

 

4.其他


character_set_system:操作系统使用的字符集设定。

character_set_filesystem:操作系统文件系统的字符集设定,固定为binary。


设置


以上内容中需要将默认字符集设为utf8时,设置/etc/my.cnf

[mysqld]

default-character-set=utf8

default-collation=utf8_general_ci

default-character-set只能改变对存储层的设定,对于客户端和服务器端的通讯层没有任何影响。

Windows下cmd不支持utf8,为了能在cmd下远程管理数据库,需要执行set names gbk,这个命令改变了和传输有关的字符集设置。


参考文献


MySQL字符集设置

http://blog.csdn.net/liuyuan185442111/article/details/42793575

http://jingyan.baidu.com/article/cb5d61050041fa005c2fe003.html

http://blog.csdn.net/ACMAIN_CHM/article/details/4174186

http://blog.163.com/zl_dream1106/blog/static/84286020123115563312/

让MYSQL彻底支持中文

http://blog.csdn.net/tsuliuchao/article/details/4145817

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值