mysql utf8mb4 乱码_MySQL乱码问题以及utf8mb4字符集

您的位置:WenRou's Blog >lnamp> MySQL乱码问题以及utf8mb4字符集

1、为什么要使用 utf8mb4 编码

根本的原因在于,采用 utf8 编码的 MySQL 无法保存占位是4个字节的 Emoji 表情。MYSQL 5.5 之前, UTF8 编码只支持1-3个字节

为了使后端的项目,全面支持客户端输入的 Emoji 表情,升级编码为 utf8mb4 是最佳解决方案。

强调:因为utf8mb4是utf8的超集,理论上即使client修改字符集为utf8mb4,也会不会对已有的utf8编码读取产生任何问题。

2、查看是否支持utf8mb4?

现在SSH中输入命令:  mysql -uroot -p

输入密码后进入mysql,然后再输入下面命令,确认 mysql server 是否支持 utf8mb4 编码。

mysql> SHOW CHAR SET WHERE Charset LIKE "%utf8%";

我们会看见如下显示:

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

| Charset | Description   | Default collation  | Maxlen |

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

| utf8    | UTF-8 Unicode | utf8_general_ci    |      3 |

| utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci |      4 |

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

或者用下面的语句也可。

mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

此时会显示如下内容,表示支持utf8mb4

mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

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

| Variable_name            | Value              |

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

| character_set_client    | utf8mb4            |

| character_set_connection | utf8mb4            |

| character_set_database  | utf8mb4            |

| character_set_filesystem | binary            |

| character_set_results    | utf8mb4            |

| character_set_server    | utf8mb4            |

| character_set_system    | utf8              |

| collation_connection    | utf8mb4_unicode_ci |

| collation_database      | utf8mb4_unicode_ci |

| collation_server        | utf8mb4_unicode_ci |

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

rows in set (0.00 sec)

至于排序规则(collation) 选择默认的 utf8mb4_general_ci,还是 utf8mb4_unicode_ci。

一般来说从排序的准确性,以及性能方面,我们应该选用 utf8mb4_unicode_ci 。

3、修改方法

服务器端,修改数据库配置文件/etc/my.cnf

[mysqld]

character-set-client-handshake = FALSE

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

init_connect='SET NAMES utf8mb4'

lower_case_table_names = 1

[client]

default-character-set = utf8mb4

[mysql]

default-character-set = utf8mb4

[mysql.server]

default-character-set = utf8mb4

[mysqld_safe]

default-character-set = utf8mb4

4、记得重启mysql.

win下面执行下列语句

net stop mysql

net start mysql

linux下面执行如下语句即可

service mysqld restart

---

请勾选我再发表评论!94 + 5 =

2493e4d91a26c9da80943019db678b9c.png路人甲表情

6cd6433e034c9aeb8b1991c6bdc119e5.pngCtrl+Enter快速提交

提交评论

昵称(必填)

邮箱(必填)

网址(选填)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值