彻底解决MysqL乱码问题

1、什么是乱码

2、预备知识

- 字符  character    eg:abcd  1234  , . (   )

- 字符集合:charset  一组字符     

  Ascii字符集合(7bit,最高位是0),标准的----可打印的     

  扩展Ascii字符集合(8bit)  拉丁语系,扩展----不可打印的字符  

  GB2312   简体中文

  BIG5   繁体中文

  GBK   包含简体中文和繁体中文

- 字符编码  给字符集合中的每1个字符指定1个二进制数字来标识。

- 字符集:字符集合+编码=字符集

- 字符序:字符的排序规则   1个字符集,可以有多个排序规则即多个字符序

以_ci结尾,大小写不敏感,不区分大小写

以_cs结尾,大小写敏感,区分大小写

3、常见的字符集

- Ascii字符集

- 扩展Ascii字符集   latin1   8位二进制  包括Ascii字符集中的全部字符

- GB2312  BIG5  GBK    16位二进制 

- unicode  字符集  全球语言   16位二进制

- 扩展Ascii字符集  latin1  latin2

- unicode字符集    unicode编码   一个字符2个字节

                          utf8             一个英文字符  占一个字节

                                              一个中文字符使3个字节

- utf8mb3   utf8mb4    more bit

- utf-8是一种变长的字节编码方式,对于某一个字符的utf-8编码,如果只有一个字节则其最高位二进制位为0;如果是多字节,其第一个字符节从最高位开始,连续的二进制位值为1的个数决定了其编码的位数,其余各字节均以10开头,utf8最多可以用到6个字节。

示例:

1字节   0xxx xxxx

2字节   110x xxxx 10xx xxxx

3字节   1110 xxxx 10xx xxxx 10xx xxxx

4字节    1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx

5字节    1111 10xx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx

6字节    1111 110x  10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx

1110 0101 1000 1000 1001 1010

E58896

A

0100 0001

41

示例:

新建文本文件,使用utf-8编码来保存,验证字符的字节数。

GBK字符集,一个英文占1个字节,一个汉字占2个字节。   

4.MysqL支持的字符集

show character set;--查看mysql支持的字符集

show variables like'character set %';-- 査看当前mysql使用的字符集

character_set client 客户端字符集

character_set connection连接字符集:character set database数据库字符集

character set results返回结果的字符集

character set server服务器字符集

character_set system系统字符集

创建数据库时,如果没有指定数据的字符集,则会使用服务器字符集;

创建表时,如果不指定表的字符集,则会使用数据库字符集;

创建表中字段时,如果不指定字段的字符集,则会使用表的字符集。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值