Mysql学习深入Mysql字符集设置 图文版

MysqL学习深入MysqL字符集设置 图文版》要点:
本文介绍了MysqL学习深入MysqL字符集设置 图文版,希望对您有用。如果有疑问,可以联系我们。

Mysql学习深入Mysql字符集设置 图文版

MysqL应用

MysqL客户端与MysqL服务端之间,存在着一个字符集转换器.MysqL应用

character_set_client          =>gbk:转换器就知道客户端发送过来的是gbk格式的编码MysqL应用

character_set_connection=>gbk:将客户端传送过来的数据转换成gbk格式MysqL应用

character_set_results        =>gbk:MysqL应用

注:以上三个字符集可以使用set names gbk来统一进行设置MysqL应用

例子:MysqL应用

create table test(MysqL应用

name varchar(64) NOT NULLMysqL应用

)charset utf8;#这里的utf8表示服务器端的字符编码MysqL应用

 MysqL应用

首先,往数据表test中插入一条数据MysqL应用

inert into test values('测试');MysqL应用

则,数据“测试”在数据库中是以“utf8”格式保存的MysqL应用

过程:MysqL应用

Mysql学习深入Mysql字符集设置 图文版

MysqL应用

 

首先,通过MysqL客户端,将数据发送给MysqL服务器,经过字符集转换器的时候,由于character_set_connection 值为gbk,所以会将客户端发送过来的数据转为gbk格式,紧接着,字符集转换器将数据要传送给服务器的时候,发现服务器是以utf8保存数据的,所以,在其内部会自动将数据由gbk转换成utf8格式MysqL应用

什么时候会出现乱码?MysqL应用

    客户端的数据格式与声明的 character_set_client不符

        通过 header('Content-type:text/html;charset=utf8');将客户端的数据转成utf8格式的,在数据经过“字符集转换器”的时候,由于character_set_client=gbk,而character_set_connection也等于gbk,所以从客户端传送过来的数据(其实是utf8格式)并不会被转换格式.MysqL应用

        但是,字符集转换器在讲数据发送给服务器的时候,发现服务器要的格式是utf8,所以会将当前数          据当做gbk格式来处理,从而转成utf8(但是,这一步其实已经错了...).MysqL应用

    2.  result与客户端页面不符合的时候        MysqL应用

Mysql学习深入Mysql字符集设置 图文版

MysqL应用

 将返回结果的格式设置为utf8,但是客户端接受的格式为gbk,因此会出现乱码MysqL应用

通过show character set 语法,可以显示所有可用的字符集MysqL应用

latin字符集MysqL应用

Mysql学习深入Mysql字符集设置 图文版

MysqL应用

注意:Maxlen列显示用于存储一个字符的最大的字节数目.MysqL应用

utf8字符集MysqL应用

Mysql学习深入Mysql字符集设置 图文版

MysqL应用

 MysqL应用

gbk字符集MysqL应用

Mysql学习深入Mysql字符集设置 图文版

MysqL应用

什么时候会丢失数据?MysqL应用

对比以上三幅图可以知道,每种字符集中,用于存储一个字符的最大的字节数目都不同,utf8最大,latin最小.所以在经过字符集转换器的时候,如果处理不当,会造成数据丢失,而且是无法挽回的.MysqL应用

比如:MysqL应用

character_set_connection的值改为lantin的时候MysqL应用

Mysql学习深入Mysql字符集设置 图文版

MysqL应用

从客户端发送过来的gbk数据,会被转成lantin1格式,因为gbk格式的数据占用的字符数较多,从而会造成数据丢失MysqL应用

Mysql学习深入Mysql字符集设置 图文版

MysqL应用

总结:MysqL应用

character_set_client和character_set_results 一般情况下要一致,因为一个表示客户端发送的数据格式,另一个表示客户端接受的数据格式为了避免造成数据丢失,需让 character_set_connection的字符编码 大于 character_set_client的字符编码 MysqL应用

相关文章

优化MySQL数据库发布系统存储的方法有:1.mysql库主从读写分...
使用mysql的方法:在“我的电脑”→右键→“管理”→“服务”...
在mysql中查看root用户权限的方法:1.命令行启动mysql服务;...
MySQL主从复制是用来备份一个与主数据库一样环境的从数据库,...
运行mysql的方法1.启动mysql服务,在“我的电脑”→右键→“...
开启mysql的方法1.可以通过快捷键win+r,输入cmd,打开窗口,...