加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql必读深入Mysql字符集设置[精华结合]

发布时间:2020-12-26 08:09:18 所属栏目:MySql教程 来源:网络整理
导读:副标题#e# 《Mysql必读深入Mysql字符集设置[精华结合]》要点: 本文介绍了Mysql必读深入Mysql字符集设置[精华结合],希望对您有用。如果有疑问,可以联系我们。 MYSQL入门基本概念 ? 字符(Character)是指人类语言中最小的表义符号.例如'A'、'B'等; ? 给定

MYSQL入门

Mysql必读深入Mysql字符集设置[精华结合]

? 首先,通过mysql客户端,将数据发送给Mysql服务器,经过字符集转换器的时候,由于character_set_connection 值为gbk,所以会将客户端发送过来的数据转为gbk格式,紧接着,字符集转换器将数据要传送给服务器的时候,发现服务器是以utf8保存数据的,所以,在其内部会自动将数据由gbk转换成utf8格式 ? ? 什么时候会出现乱码?
    客户端的数据格式与声明的?character_set_client不符
? ? ? ? 通过?header('Content-type:text/html;charset=utf8');将客户端的数据转成utf8格式的,在数据经过“字符集转换器”的时候,由于character_set_client=gbk,而character_set_connection也等于gbk,所以从客户端传送过来的数据(其实是utf8格式)并不会被转换格式. ????????但是,字符集转换器在讲数据发送给服务器的时候,发现服务器要的格式是utf8,所以会将当前数 ? ? ? ? ?据当做gbk格式来处理,从而转成utf8(但是,这一步其实已经错了...). ????2.? result与客户端页面不符合的时候 ????? ??

MYSQL入门

Mysql必读深入Mysql字符集设置[精华结合]

?将返回结果的格式设置为utf8,但是客户端接受的格式为gbk,因此会出现乱码 ?
通过show character set 语法,可以显示所有可用的字符集 latin字符集

MYSQL入门

Mysql必读深入Mysql字符集设置[精华结合]

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

MYSQL入门

Mysql必读深入Mysql字符集设置[精华结合]

? gbk字符集

MYSQL入门

Mysql必读深入Mysql字符集设置[精华结合]

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

MYSQL入门

Mysql必读深入Mysql字符集设置[精华结合]

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

MYSQL入门

Mysql必读深入Mysql字符集设置[精华结合]

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

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读