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

mysql别名可以是汉字吗 mysql数据库名可以是中文吗_mysql

        在学习到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=utf8collation-server=utf8_general_ci

3、重启mysql服务


        好了,以上就是MySQL字符乱码问题的解决方法。记录下来是方便自己以后再次用到或者为别人需要是查阅