字符集和校对规则(学习笔记)

  字符集:一套符号和字符编码的集合。

  Gbk utf8 latin1

  校对规则:在字符串内用于比较字符的一套规则。

  

  字符在数据库里有四个等级

  服务器级:安装数据库时指定的

  数据库级:建立database指定或者继承服务器级

  数据表级:建立table时指定或者继承数据库级

Create table student3

(

Id int unsigned auto_increment primary_key,

Username varchar(20) not null unique key,

Nickname varchar(20)

)charset=gbk;这里指定了表的字符集。

  字符级:建立数据表时定义字段指定的字符集或者继承表的字符集

Create table student4

(

Id int unsigned auto_increment primary key,

Username varchar(20) not null unique key,

Nickname varchar(20) character set utf8

)default character set gbk;这里同时指定表和字段的字符集。

  因此我们根据我们的项目或网站,安装数据库时最好用我们定好的编码。比如utf8或gbk

 

客户端的字符集

Gbk编码

Insert into student4 values(null, ‘冯十’, ‘小冯’);

如果是utf8的系统客户端开启后会是乱码。

Show variable like ‘%char%’;查看关于编码的变量

Character_set_client      客户端使用的编码

Character_set_connection  数据库连接使用的编码

Character_set_results     返回结果使用的编码

这是三个变量的设置影响到数据是否是乱码。

更改变量set character_set_results=gbk;就不乱码了。

  乱码解决方法设置character_set_results为正确的编码

  进行插入是无法插入的可能因为编码不符导致的。因为客户端是gbk但是告诉服务器说是utf8编码,所以无法插入,变量character_set_client=utf8

  解决方法:设置客户端编码的编码为正确的值。

  Set character_set_client=gbk;

  因此如果客户端这两个变量设置正确,那么无论是插入数据还是读数据都不会乱码。

  拿php来说,你的php文件保存成什么格式,你的客户端就是什么编码格式

  Character_set_connection 转码,不设置也没有,有点多余。

  可以把上述三个变量合成一个

  Set names gbk;

  Set names utf8;

  关于

Create table student4

(

Id int unsigned auto_increment primary key,

Username varchar(20) not null unique key,

Nickname varchar(20) character set utf8

)default character set gbk;

  数据表字段的编码会不会影响客户端的数据插入和显示?

  客户端不会出现乱码的情况,原因是数据库会根据客户端的编码进行正确的转换。

  总结:

    1 首先确认我们的客户端的编码,

    2 根据客户端编码,用set names gbk或utf8设置编码

    3 完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

波罗学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值