MYSQL入门 ![Mysql必读深入Mysql字符集配置[英华团结]](http://img28.aspzz.cn/uploads/allimg/c201225/160X45005104Z-54504.gif) ?
起首,通过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字符集配置[英华团结]](http://img28.aspzz.cn/uploads/allimg/c201225/160X45006403P-N538.gif)
?将返回功效的名目配置为utf8,可是客户端接管的名目为gbk,因此会呈现乱码
?
通过show character set 语法,可以表现全部可用的字符集
latin字符集
MYSQL入门 ![Mysql必读深入Mysql字符集配置[英华团结]](http://img28.aspzz.cn/uploads/allimg/c201225/160X4500A0040-VR6.gif)
留意:Maxlen列表现用于存储一个字符的最大的字节数量.
?
utf8字符集
MYSQL入门 ![Mysql必读深入Mysql字符集配置[英华团结]](http://img28.aspzz.cn/uploads/allimg/c201225/160X4500M2X0-106329.gif)
?
gbk字符集
MYSQL入门 ![Mysql必读深入Mysql字符集配置[英华团结]](http://img28.aspzz.cn/uploads/allimg/c201225/160X4500961150-132F7.gif)
?
什么时辰会丢失数据?
比拟以上三幅图可以知道,每种字符齐集,用于存储一个字符的最大的字节数量都差异,utf8最大,latin最小.以是在颠末字符集转换器的时辰,假如处理赏罚不妥,会造成数据丢失,并且是无法挽回的.
好比:
将character_set_connection的值改为lantin的时辰
MYSQL入门 ![Mysql必读深入Mysql字符集配置[英华团结]](http://img28.aspzz.cn/uploads/allimg/c201225/160X4500963H0-145517.gif)
从客户端发送过来的gbk数据,会被转成lantin1名目,由于gbk名目标数据占用的字符数较多,从而会造成数据丢失
?
MYSQL入门 ![Mysql必读深入Mysql字符集配置[英华团结]](http://img28.aspzz.cn/uploads/allimg/c201225/160X45011F060-1MN9.gif)
总结:
character_set_client和character_set_results 一样平常环境下要同等,由于一个暗示客户端发送的数据名目,另一个暗示客户端接管的数据名目为了停止造成数据丢失,需让?character_set_connection的字符编码 大于?character_set_client的字符编码 (编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|