mysql的字符集

mysql字符集主要分两种,一种就是普通的字符集,另外一种是比较字符集,主要是做联表查询时,多个表之前的字段比较时会用到,如果多个表之间的比较字符集不一致时,做比较会报错。并且字符集与比较字符集是一对多的关系,也就是每一种字符集都会对应多个比较字符集,而且每一种字符集都会有一种默认的比较字符集。mysql的字符集默认是latin1,并不是和系统的字符集一样,这一点切记。所以在安装mysql时以及在新建库,表时一定要指定字符集和比较字符集。如果没有指定比较字符集,会默认使用指定字符集的默认比较字符集。可以通过show character set;查看mysql支持的所有字符集。

mysql的字符集非常灵活,服务器端的字符集主要分四个等级,服务器,库,表,字段。服务器的字符集需要修改my.cnf配置文件,5.5以上的版本在[mysqld]下面添加character-set-server=utf8,注意这里不是utf-8。顺便说一句,默认的配置文件并不在/etc/下面,而是在安装目录下面,但是修改安装目录下面的配置文件并不会生效,所以要将配置文件复制到/etc/下面再修改,修改完一定要重启mysql,才会生效。而对于库和表的字符,在建新库或者新表时指定即可,或者是使用alter table/database语句。注意:在表建成功后,如果要修改字符集,并不会对已有的数据进行格式转化,只会对新插入的数据应用新的数据集。可以通过show variables like 'character%';查看当前设置的字符集,show variables like 'collation%'; 查看当前设置的比较集。而对于列的字符集,一般不会去设置,也就不说了。

除了上面说的服务器端的字符集外,还有就是连接时的字符集,主要是三个参数:character_set_client, character_set_connection, character_set_results,分别表示客户端,连接,返回结果的字符集。可以使用命令set names utf8;来统一设置这三个参数,或者是修改配置文件,在[mysql]下面添加default-character-set=utf8,这里是[mysql]没有d,有d的表示是服务器端的配置。

你可能感兴趣的:(mysql,mysql,字符集,乱码,utf8,服务器)