版权声明:本文为Areom原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhanjianjiu/article/details/82792813
背景:
客户需要在自动回复的文字、图文表情上使用Emoji表情?
原因:
Mysql表设计时,都是用UTF8字符集的,Mysql的utf8字符集是3字节的,而emoji是4字节,所以保存修改等操作会出错。
准备:
-
mysql的版本必须为 v5.5.3 或更高
-
把数据库的编码改成
utf8mb4 -- UTF-8 Unicode
-
然后需要存储emoji表情的字段编码或者表编码修改成
utf8mb4_general_ci
-
数据库连接也需要改为
utf8mb4
应用:
阿里云rds+微擎
第一种:
如果是项目才开始搭建,那么直接按照上述的准备设计数据库和链接数据库就可以了,不需要做其他操作;如果是已在使用的项目,那么请看第二种;
第二种:
1、RDS数据库修改
//修改库:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
//修改表: ims_wechat_news(图文表) ims_basic_reply(文字表)
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
//修改一列: 根据需求来,如果已修改了表,就不需要这个
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
2、微擎数据库连接修改(项目根目录/data/config.php)
$config['db']['master']['charset'] = 'utf8mb4';
//下面这个根据需求
$config['db']['slave']['1']['charset'] = 'utf8mb4';
3、微擎登录:系统-->更新缓存-->全选,提交!
转载借鉴: