9.1 MySQL:中文数据问题

9.1 MySQL:中文数据问题

中文数据问题本质是字符集问题.

计算机只识别二进制: 人类更多是识别符号: 需要有个二进制与字符的对应关系(字符集)

客户端向服务器插入中文数据: 没有成功

1.png

原因: \xD5\xC5\xD4\xBD代表的是"张越"在当前编码(字符集)下对应的二进制编码转换成的十六进制: 两个汉字 => 四个字节(GBK)

1.png

2.png

报错: 服务器没有识别对应的四个字节: 服务器认为数据是UTF8, 一个汉字有三个字节: 读取三个字节转换成汉字(失败),剩余的再读三个字节(不够): 最终失败.

所有的数据库服务器认为(表现)的一些特性都是通过服务器端的变量来保存: 系统先读取自己的变量,看看应该怎么表现。

//查看服务器到底识别哪些字符集show character set;

1.png

基本上: 服务器是万能,什么字符集都支持

//既然服务器识别这么多: 总有一种是服务器默认的跟客户端打交道的字符集

Show variables like 'character_set%';

1.png

问题根源: 客户端数据只能是GBK, 而服务器认为是UTF8: 矛盾产生

1.png

2.png

解决方案: 改变服务器, 默认的接收字符集为GBK;

Set character_set_client = gbk;

1.png

插入中文的效果

1.png

查看数据效果: 依然是乱码

1.png

原因: 数据来源是服务器, 解析数据是客户端(客户端只识别GBK: 只会两个字节一个汉字): 但是事实服务器给的数据却是UTF8,三个字节一个汉字: 乱码

解决方案: 修改服务器给客户端的数据字符集为GBK

Set character_set_results = GBK ;

1.png

查看数据效果

1.png

Set 变量 = 值; 修改只是会话级别(当前客户端,当次连接有效: 关闭失效)

客户端断开连接, 重新连接数据库

1.png

2.png

设置服务器对客户端的字符集的认识: 可以使用快捷方式: set names 字符集

Set names gbk; ====> character_set_client,character_set_results,character_set_connection

1.png

Connection连接层: 是字符集转变的中间者,如果统一了效率更高,不统一也没问题.

1.png

2.png


MySQL(列表、list、全)mysqllist
http://www.zh-cjh.com/wenzhangguilei/2503.html
文章归类、所有文章列表、LISTLIST
http://www.zh-cjh.com/wangzhangonggao/2195.html

1、本站资源长期持续更新。
2、本资源基本为原创,部分来源其他付费资源平台或互联网收集,如有侵权请联系及时处理。
3、本站大部分文章的截图来源实验测试环境,请不要在生产环境中随意模仿,以免带来灾难性后果。

转载请保留出处:  www.zh-cjh.com珠海陈坚浩博客 » 9.1 MySQL:中文数据问题

作者: cjh


手机扫一扫,手机上查看此文章:

一切源于价值!

其他 模板文件不存在: ./template/plugins/comment/pc/index.htm

未雨绸缪、居安思危!

数据安全、有备无患!

注意操作、数据无价!

一切源于价值!