校对集问题和web乱码问题

校对集问题;数据比较的方式
校对集有三种格式;
_bin:binary,二进制比较,取出二进制位,以为一位的比较,区分大小写
_cs:case sensitive,大小写敏感,区分大小写
_ci:case insensitice,大小写不敏感,不区分大小写
接着让我们来查看数据库所支持的校对集:show collation;
(注意:校对集应用:只有当数据产生比较的时候,校对集才会生效)

–创建表使用不同的校对集
create table my_collate_bin(
name char(1)
)charset utf8 collate utf8_bin;

create table my_collate_bin(
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’);
看起来创建的表格没有什么区别,其实要验证不同校对集产生的效果需要对数据进行排序。

比较根据某字段进行排序:
order by 字段名[asc|desc];asc升序,默认升序;
–排序查找
select * from my_collate_bin order by name;
select * from my_collate_ci order by name;
此时可以进行数据比较了;

另外,当有数据之后不用再修改校对集了,不可改,应该在录入数据的时候确定校对集。

接下来来的内容是关于web动态网站乱码问题,也就是,浏览器,服务器PHP和数据库服务器三者,都有自己的字符集。
浏览器默认(gbk)不可更改
服务器PHP默认为utf-8;
数据库服务器默认为utf8,
让我们来看看如何处理这三者之间的关系

在这里插入图片描述
那么这个图的来解释一下;
1,首先服务器PHP通过方案一,二,提供表单给浏览器,虽然浏览器的字符集为gbk,但是传回给PHP的数据被限定为了utf-8,
2,数据库服务器告诉服务器只接受utf8,PHP服务器传入utf8数据,事实上这边可以直接通过数据库服务器设置set names utf8,直接可以解决传入传出字符指令问题
3,尽管数据库表里面的内容为gbk,但是对传入数据不造成影响。
之后我会爬取一些内容存到数据库作为例子,尽请期待

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值