彻底搞定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、付费专栏及课程。

余额充值