mysql数据库的字符集相关

数据库的字符集

在平时的数据库操作中,乱码问题是我们经常遇到的一个问题,而乱码其实就是字符集设置的不合适导致的。因此这里整理下数据库相关的字符集。

查看数据库当前支持的字符集


Default collation 为校对规则,以此决定字符的等价关系和大小关系。 其中ci是case insensitive即大小写不敏感, cs 为case sensitive 即大小写敏感。 

MaxLen是用于存储一个字符的最大的字节数目

字符集相关的变量

查看数据库的字符集相关的变量如下:


 

参数
说明
character_set_client 客户端发送过来的数据使用的字符集
character_set_connection 连接层字符集
character_set_database 当前选中数据库的默认字符集
character_set_filesystem 把os上文件名转化成此字符集,即把 character_set_client转换character_set_filesystem, 默认binary是不做任何转换的
character_set_results 查询结果字符集
character_set_server 默认的内部操作字符集
character_set_system 系统元数据(字段名等)字符集

 

在MYSQL数据库中,提供了4中粒度的字符集。 

  1. server:整个实例
  2. database:数据库
  3. table:表
  4. column: 列

上述4中的作用域依次递减、但是优先级依次递增。

一个完整的用户请求的字符集转换流程是
   1) mysql Server收到请求时将请求数据从character_set_client转换为character_set_connection
   2) 进行内部操作前将请求数据从character_set_connection转换为内部操作字符集,步骤如下
        A. 使用每个数据字段(column)的CHARACTER SET设定值;
        B. 若上述值不存在,则使用对应数据表(table)的字符集设定值
        C. 若上述值不存在,则使用对应数据库(database)的字符集设定值;
        D. 若上述值不存在,则使用character_set_server设定值。
   3) 最后将操作结果从内部操作字符集转换为character_set_results


SET NAMES

mysql的配置文件或者启动时指定参数可以设置好mysql的上述参数。

同时还可以使用一些命令来设置当前会话使用的字符集,

常用的有SET NAMES


设置后


通过上述示例可以看出set names xxx 等价于同时设置 character_set_client、character_set_connection、character_set_results

上述设置只对当前会话生效。

SET CHARACTER SET

另外还有SET  CHARACTER SET来设置

设置前:


设置后:(当前选中的数据库的的字符集为utf8)


即 SET CHARACTER SET X的效果相当于同时设置下列:

SET character_set_client = X

character_set_results = X

character_set_connection = @@character_set_database (全局的character_set_database值)

 

 

http://blog.csdn.net/wyzxg/article/details/8779682

http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html

http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_character_set_filesystem

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值