问题分析总结:
原因
普通的字符串或者表情都是占位3个字节,所以utf8足够用了,
但是移动端的表情符号占位是4个字节,普通的utf8就不够用了,
为了应对无线互联网的机遇和挑战、避免 emoji 表情符号带来的问题、涉及无线相关的 MySQL 数据库建议都提前采用 utf8mb4 字符集,这必须要作为移动互联网行业的一个技术选型的要点
限制
需要 >= MySQL 5.5.3版本、从库也必须是5.5的了、低版本不支持这个字符集、复制报错。
Emoji表情符号录入MySQL数据库报错的解决方案
适用ios,android,wp等平台手机emoji表情符号兼容方案
emoji 表情字符插入的配置,emoji表情字符插入
注意:
由于数据表的字符集改变了,
varchar
类型数据的字符集也改为了utf8mb4_unicode_ci
,所以在查询的时候,一定注意以这个字段为条件的时候,字段的数据类型是不是字符串类型。如果这个字段的字符集是utf8mb4_unicode_ci
,而查询的时候是一个Int
型的数组,那么一定查不到数据的。
再有:
由于我使用的Laravel框架,一定要在
config/database.php
文件中修改编码方式和字符集
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => 'FN_',
'strict' => false,
'engine' => null,
],
网友评论