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

要使用这么个默认字符集)的情况我们可以这样来解决。