MySQL的字符集设定

来源:互联网 发布:拒绝退款 淘宝介入 编辑:程序博客网 时间:2024/06/05 01:16

我们有时在查看数据库数据时,看到一写乱码,这是由于mysql数据库字符集设定的问题,下面我就来谈谈如何正确设定字符集

在mysql中可以设定的字符集有:①服务器默认字符集 ②数据库字符集 ③表的字符集 ④列的字符集。
如果一个级别没有设置字符集,则继承上一级的字符集,即如果表没有设置字符集会自动继承数据库的字符集

mysql> show character set;                     #查看mysql支持的字符集mysql> show variables like 'character_set%';   #查看数据库编码+--------------------------+-----------------------------------+| Variable_name            | Value                             |+--------------------------+-----------------------------------+| character_set_client     | utf8                              |  | character_set_connection | utf8                              || character_set_database   | utf8                              || character_set_filesystem | binary                            || character_set_results    | utf8                              || character_set_server     | utf8                              || character_set_system     | utf8                              || character_sets_dir       | /usr/local/mysql/share/charsets/  |+--------------------------+-----------------------------------+

举个简单的例子:

1、告诉服务器(准确的是告诉转换器),我给你发送给的是是什么编码?set character_set_client = 'utf8';2、告诉转换器,转换成什么编码?set character_set_connection = 'utf8';3、查询结果用什么编码?set character_set_results = 'utf8';如果以上三者字符集都为 'utf8',可以简写成  set names 'utf8';即为set character_set_client = 'utf8';set character_set_connection = 'utf8';  set character_set_results = 'utf8'; 

这里写图片描述

什么时候产生乱码

client声明与事实不符②results与客户端页面不符

什么时候会丢失数据

转换器的字符集connection  服务器字符集server   客户端client字符集范围小字符编码的演变过程:ASCII --> GB2312 --> GBK --> GB18030 --> Unicode --> UTF-8

备注:
我们在设置客户端和服务器字符集的时候可以直接在mysql的 my.cnf 配置文件中设定,并将其放置在对应的标签下即可。

[client]default-character-set = utf8   #client端字符集[mysqld]character_set_server = utf8    #服务器字符集