日期:2014-05-16  浏览次数:20646 次

转< 经典的很>mysql字符集及编码转换学习篇
mysql服务器中有六个关键位置使用了字符集的概念,他们是:client 、connection、database、results、server,
? a、其中client是客户端使用的字符集,相当于网页中的字符集设置如下
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">。
? ?b、其中的connection是连接数据库的字符集设置类型,如果没有指明连接数据库使用的字符集类型
就按照服务器端默认的字符集设置。
? ?c、其中database是数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装
时指定的字符集设置。
? ?d、server是服务器安装时指定的默认字符集设定。
 

server是最高的字符集设定,database没有单独设定就按照server的字符
集设定,其他都是按照server的设定设置字符集。还有,数据库内的每个表和字段也都有字符集的概念,一般都
是根据上一级结构决定自身的字符集,比如表就根据database库的设定决定自己的字符集,字段根据表来决定自己
的字符集。
 
二、统一字符集的方法:(以utf-8字符集为例,因为他是目前支持文字种类最广的字符集)

? ? ? 1、彻底解决字符集的方法:

? ? ? ?要彻底解决字符集的方法就是让mysql在安装的时候就是用utf-8的字符集设定,这样可以使上面的六个关键
点的编码都为utf-8。

? ? ? a、 在windows下安装mysql有提示可以选择字符集,我们选择utf-8就可以了。

? ? ? b、在linux下有三种安装方法,第一种是rpm包安装,这种因为我没有使用过所以没有发言权。

? ? ? ? ?第二种为可执行程序安装,这种安装因为已经被编译成了
latin1这种瑞典语的字符集,所以无法完全解决字 符集问题,这个版本我们后面会讲到怎么解决字符集问题。 ? ? ? ? ?第三种为源码自行编译安装,这种安装可以在编译时设置字符集类型,这部分主要讲这种安装方式。 ? ? ? ? 在编译mysql是我们可以用这样的指令:./configure --default-character-set=utf8 这样,在编译的时候,就会把mysql的server项编译成utf8的编码,这样这个mysql下建立的所有数据库都将使用utf8 编码存储,所有有关的方面都是utf8编码。

 2、局部坚决字符集的方法:
?
? ? ? ? 如果遇到自己的数据库使用的是默认安装的latin1字符集的(很奇怪为什么mysql要使用这么个默认字符集)
的情况我们可以这样来解决。

? ? ? ?a、默认请况下我们在mysql命令行使用status指令察看状态,
可以看到:

还可以用SHOW VARIABLES LIKE 'character_set_%';指令察看内容如下: 


这就说明,除system是utf8之外的所有内容的字符集都为latin1,我们怎么样才能使用utf字符集呢?
有人说可以在my.cnf文件的[mysqld]段中加入default-character-set=utf8这一项就可以解决,但经过我的实验,这一条
完全没有必要,以下是增加了这一项后得显示结果。 



从上面可以看出,使用了配置文件中修改默认字符集的方法,并没有把client、connection、
results这三项改成u