Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1398212
  • 博文数量: 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

2015-06-06 22:58:20

   mysql字符集有关的变量有下面几个:
                client character set:  客户端发送给服务器时采用的字符集
        connection character set:  内部连接上的字符集
               result character set:   服务器返回给客户端的结果采用的结果集
              server character set:   数据库服务器的字符集
                  db  character set:   数据库的字符集
           column  character set:   字段的字符集
   
      前面3个字符集都是与连接上的数据传输有关的字符集
      后面3个字符集都是服务器内部的字符集,主要是创建数据库,创建表时有影响
             例如:  创建数据库时,没有指定字符集,则继承服务器的字符集
                            数据库的字符集会影响库中的所有表
                       创建表时,如果没有指定字符集,则继承数据库的字符集
      连接有关字符集中的connection字符集在转到内部处理时,还是要转到内部的字符集,内部字符集
      就是表的字符集,列的字符集,当输出结果时,会再需要将内部字符集转换为result character set
      result character set客户端不是协商完成,但是传输层面的3个字符集可以通过一个set names utf8
      来统一3个字符集变量

   本地控制台的字符集通过my.cnf中的client的字符集设置
   外部机器的client character set 是客户端与服务器交互时协商

    如果数据库和表的字符集是latin1时,而传输上用的是utf8,由于数据存储时,latin1最大占1个字节,中文存储不了,即使外围用utf8还是会乱码
    如果result character set与客户端本地的不匹配,也会出现乱码    
    当然编码统一后,减少了每个环节的转换开销
     
       
阅读(902) | 评论(0) | 转发(0) |
0

上一篇:重温fork

下一篇:MySQL字符集(三)

给主人留下些什么吧!~~