mysql为什么到8_现在MySQL数据库为什么都用utf-8mb4

MySQL默认编码是Latin1,不支持中文。

7afc205ec579cd073ab589ec62aebfbd.png

在学习到MySQL调优schema与数据类型优化时,字符集的选择一般推荐大家使用utf8mb4,而不是我们所熟悉的UTF-8编码方式,这是为什么呢?

这是因为MySQL 从 4.1 版本开始支持 UTF-8,也就是 2003 年,然而目前流行的UTF-8 标准(RFC 3629)是在此之后规定的。正因此,才造就了MySQL中的UTF-8与我们日常开发中的UTF-8不一致,从到导致了些问题。

重点来了:

MySQL的UTF-8只支持每个字符最多三个字节

而真正的 UTF-8 是每个字符最多四个字节

虽然MySQL的UTF-8存在缺陷,但是MySQL(包括mariadb)官方却没有修复此bug,而是通过2010年重新发布的“utf8mb4”来支持真正的 UTF-8。因此想要解决此问题,只能够将MySQL数据库设置为utf8mb4字符集才行。

为了以后工作的方便和更好的兼容性,大家以后使用MySQL就老老实实的设置字符集为utf8mb4吧^_^!

对于 CHAR 类型数据,utf8mb4 会多消耗一些空间,根据 Mysql 官方建议,使用 VARCHAR 替代 CHAR。

否则总有一天会遇到头疼的事情。

下面是常用的查看与修改数据库/表编码的语句。

1.查看数据库编码格式

mysql> show variables like 'character%';

+--------------------------+--------------------------------------------------------+

| Variable_name | Value |

+--------------------------+--------------------------------------------------------+

| character_set_client | utf8mb4 |

| character_set_connection | utf8mb4 |

| character_set_database | latin1 |

| character_set_filesystem | binary |

| character_set_results | utf8mb4 |

| character_set_server | utf8 |

| character_set_system | utf8 |

| character_sets_dir | C:\phpstudy_pro\Extensions\MySQL5.7.26\share\charsets\ |

+--------------------------+--------------------------------------------------------+

8 rows in set (0.04 sec)

2.查看数据表的编码格式

mysql> show create table ;

3.创建数据库时指定数据库的字符集

mysql>create database character set utf8;

4.创建数据表时指定数据表的编码格式

create table tb_books (

name varchar(45) not null,

price double not null,

bookCount int not null,

author varchar(45) not null ) default charset = utf8;

5.修改数据库的编码格式

mysql>alter database character set utf8;

6.修改数据表格编码格式

mysql>alter table character set utf8;

7.修改字段编码格式

mysql>alter table change character set utf8;

mysql>alter table user change username username varchar(20) character set utf8 not null;

或者通过修改配置文件来实现

1、找到配置文件

在windows系统下的mysql的安装目录下找到my.ini文件(如果没有的话就把my-medium.ini复制,然后重命名为my.ini即可)

在linux系统下打开配置文件,我使用的linux版本是ubuntu,配置文件在/etc/mysql/my.cnf

2、在[client]和[mysqld]字段在下面均加上下列参数,保存并关闭

default-character-set=utf8

或者

character-set-server=utf8

collation-server=utf8_general_ci

3、重启mysql服务

好了,以上就是MySQL字符乱码问题的解决方法。记录下来是方便自己以后再次用到或者为别人需要是查阅,如果有错误的地方,欢迎指出,谢谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值