MySQL 的 utf8 编码的一个字符最多 3 个字节,但是一个 emoji 表情为 4 个字节,所以 utf8 不支持存储 emoji 表情。但是 utf8 的超集 utf8mb4 一个字符最多能有 4 字节,所以能支持 emoji 表情的存储。下面介绍了关于如何修改 mysql 数据库的编码格式变为 utf8mb4 的具体方法。
找到 /etc/
路径下的 my.cnf 文件(或 /etc/mysql/
路径下),通过 vim 命令 vim /etc/my.cnf
打开该文件并进行编辑,需添加如下所示配置:
[client] default-character-set=utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect=’SET NAMES utf8mb4' [mysql] default-character-set=utf8mb4
修改完毕之后,通过 :wq
保存退出
停止 MySQL 的运行
通过 /etc/init.d/mysql
执行 stop 命令(或 /etc/init.d/mysqld
)
启动 MySQL
通过 /etc/init.d/mysql
执行 start 命令(或 /etc/init.d/mysqld
)
检查字符集:
进入 MySQL 中,用
SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
命令查看字符集的情况
2.修改 database/table 和 column 的字符集
进入 MySQL 中,按下述所示进行命令的执行:
1) 修改 database 的字符集:
ALTER DATABASE 数据库名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
示例:
ALTER DATABASE xxxdb CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
2) 步骤1)执行完成之后,需要执行 use 数据库名,指明当前需要进行字符集修改的数据库;示例:use xxxdb;
3)修改 table 的字符集:
ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
示例:
ALTER TABLE user_comments CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
4) 修改 column 的字符集:
ALTER TABLE 表名 CHANGE 字段名 字段名 该字段原来的数据类型 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
示例:
ALTER TABLE user_comments CHANGE content content TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
上述修改完毕,exit 退出 MySQL
如使用 ThinkPHP,在 Conf 里设置
'DB_CHARSET'=> 'utf8mb4',