Mysql学习历程基本语法(5)--中文数据问题
来源:互联网 发布:淘宝一元包邮的店 编辑:程序博客网 时间:2024/06/09 14:39
中文数据问题本质是字符集问题
\xD5\xC5\xD4\xBD代表"张越在"当前编码下对应的二进制编码转换成的十六进制:两个汉字对应四个字节 GBK
错误原因:服务器没有识别对应的四个字节,服务器认为数据是UTF8,一个汉字对应三个字节;
所有数据服务器认为(表现)的一些特性,都是通过服务器端的变量来保存;系统先读取自己的变量看应该怎么表现;
查看服务器到底识别哪些字符集 show character set;
服务器识别这么多字符集,总有一种是服务器默认的和客户端打交道的字符集show variables like 'character_set%' ; show variables like '%character%'; show variables like '%collation%';
显示结果:variable_name value
character_set_client utf8 服务器默认客户端来的数据字符集UTF8
character_set_connection utf8 连接层字符集
character_set_database utf8 当前所在数据库字符集
character_set_filesystem binary
character_set_results utf8 服务器默认给外部数据的字符集
问题根源:客户端数据只能是gbk 而服务器认为是utf8;产生矛盾
解决方案:改变服务器默认的接受字符集为gbk
set character_set_client=gbk;
查看数据是乱码,原因:数据来源是服务器,解析数据是客户端,客户端只会识别gbk,但是实时服务器给的数据是utf8(三个字节代表一个数字)
解决方案:修改服务器给客户端的数据字符集为gbk
set character_set_results=gbk;
注意:set 变量=值 ;修改的只是会话级别的(当前客户端当次连接有效,关闭失效)
设置服务器对客户端的字符集的认识:可以使用快捷方式
set names gbk;==>character_set_client character_set_connectioncharacter_set_results
connection连接层:是字符集转变中间者,统一了效率更高;
校对集问题
校对集:数据比较的方式
校对集三种格式 _bin:binary 二进制比较,区分大小写
_cs:case sensitive,大小写敏感,区分大小写
_ci:case insensitive,大小不写敏感,不区分大小写
查看所有校对集show collation;
校对集应用:只有当数据产生比较时,校对集才生效
对比:使用utf8_bin和utf8_general_ci来验证不同的校对集效果
1.创建不同校对集对应的表
2.插入数据(此时校对集不立即生效)
3.比较,根据某个字段进行排序:order by 字段名 [asc| desc] ; asc升序,默认的 desc降序
例子:create table my_collate_bin(name char(1)) charset utf8 collate utf8_bin;
create table my_collate_ci(name char(1)) charset utf8 collate utf8_general_ci;
insert into my_collate_bin values ('a'),('A'),('b'),('B');
insert into my_collate_ci values ('a'),('A'),('b'),('B');
select * from my_collate_bin order by name;
select * from my_collate_ci order by name;
注意:校对集必须在数据没有之前声明好,如果有了数据,再进行校对集修改,修改无效;
- Mysql学习历程基本语法(5)--中文数据问题
- Mysql学习历程基本语法(4)--数据操作
- Mysql学习历程基本语法(1)
- Mysql学习历程基本语法(2)--库操作
- Mysql学习历程基本语法(3)--表操作
- Mysql学习历程基本语法(6)--数据类型
- Mysql学习历程基本语法(7)--时间日期类型
- Mysql学习历程基本语法(8)-字符串类型
- Mysql学习历程基本语法(9)-列属性
- MySQL学习历程(二):基本操作
- Java学习历程(Java基本语法演示)
- MySQL基本语法学习
- Mysql学习历程(11)-高级数据操作
- Mysql学习历程(16)-数据备份与还原
- linux mysql基本语法学习
- MySql基本语法(学习笔记)
- MySql基本语法(学习笔记)
- smali 语法学习历程
- 工厂模式
- spring使用FreeMarker模板发送邮件及附件笔记
- linux定时任务crontab命令和crond服务详解
- js学习1707091223
- UnhookWindowsHookEx
- Mysql学习历程基本语法(5)--中文数据问题
- Unity射线检测的方向是 世界坐标系还是自身坐标系
- HDU1074:Doing Homework(状态压缩DP)
- Java NIO 基础
- 剑指offer面试题[34]丑数
- redux 在 React-Native 工作中的使用
- JZ2440 中断学习
- 删除字符串中出现次数最少的字符
- 笔记2