Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1398280
  • 博文数量: 277
  • 博客积分: 2551
  • 博客等级: 少校
  • 技术积分: 3918
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-21 22:46
文章分类

全部博文(277)

文章存档

2017年(3)

2016年(9)

2015年(65)

2014年(27)

2013年(85)

2012年(61)

2011年(27)

分类: Mysql/postgreSQL

2013-08-09 07:28:14

      MySQL的字符集有很多种,每种字符集都有可能有多种校对规则,每种字符集都有一个默认的校对规则。
      只有基于字符的值才真正有字符集的概念,这些都是在进行相应的运算时体现出来,当然是在MySQL层面的比较。
      MySQL字符集的设定选项有很多,但是采用的自上而下的继承方式来影响数据库。
      创建数据库时,根据character_set_server来影响创建数据库时的默认字符集
      创建表的时,将根据数据库的字符集设置来指定表的默认字符集
      创建列的时候,将根据表的字符集来设定列的默认字符集
      
      当服务器和客户端通信的时候,它们可能使用不同的字符集,这时,服务器端将进行必要的翻译转换工作。

      服务器端总是假设客户端是按照character_set_client的字符集来传输数据和sql语句。
      服务器收到客户端的SQL语句时,它先将其转换成character_set_connection指定的字符集,并且使用这个设置来决定如何将数据转换成字符串。
      服务器返回数据或者错误信息给客户端的时候,它会将其转换成character_set_result指定的字符集。

      根据需要,可以使用set names 或者set character set 语句来改变上面的设置。服务器端上使用这个命令只能改变服务器的设置,客户端程序和客户端API也需要使用正确
      的字符集才能避免在通信时出现问题。
    
     
阅读(1793) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~