mysql存储表情
微信授权获取用户昵称带表情,直接存储MySQL会报错,因为mysql的utf8编码的一个字符最多3个字节,但是一个emoji表情为4个字节,所以utf8不支持存储emoji表情。解决办法有两个
1、过滤表情符号
/*去除微信表情*/ function clearWxExpression($str){ return preg_replace_callback('/[\xf0-\xf7].{3}/', function($r) { return '';}, $str); }
2、修改mysql配置
2.1、编辑配置文件
vim /etc/my.cnf
2.2、添加以下配置
[client]default-character-set = utf8mb4 [mysql]default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4'
2.3、重启msyqld服务
/etc/rc.d/rc.mysql restart
2.4、修改database,table,column字符集
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTER TABLE table_name CHANGE column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;