1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > mysql utf8mb4 乱码_MySQL乱码问题以及utf8mb4字符集

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

时间:2022-09-23 19:03:45

相关推荐

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/f

[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 =

路人甲表情

Ctrl+Enter快速提交

提交评论

昵称(必填)

邮箱(必填)

网址(选填)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。