
项目中有个评论功能,微信用户授权登录后,需要显示用户的昵称及评论内容。
用户的昵称和评论内容都会出现 Emoji 表情,目前我把存储评论的表改成了 utf8mb4 编码。
服务器环境: PHP7 + MySQL5.6 + Laravel 5.2
databases.php 配置文件
'mysql_utf8mb4' => [ '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' => env('DB_PREFIX', 'pn_'), 'strict' => false, 'engine' => null, ], comment 表的 Model
class Comment extends Model { protected $cOnnection= 'mysql_utf8mb4'; protected $table = 'comment'; } 用 iPhone 测试输入了几个 Emoji 表情,存到 MySQL 的时候,显示成????一堆问号
请问怎样保存 Emoji 表情到 MySQL 数据库,再次查询的时候,页面中的 Emoji 表情能够在 PC 、 IOS 、安卓等设备上都可以正常显示呢?
相关扩展: https://github.com/unicodeveloper/laravel-emoji
这个扩展貌似只能根据名称和编码查询出 Emoji 表情。
1 jswh 2017-01-11 20:24:30 +08:00 对应字段的编码检查了么? |
2 bdbai 2017-01-11 20:55:30 +08:00 via Android utf8mb4 |
3 anai1943 OP @jswh 数据库和表的字段都改成 utf8mb4 了,是不是服务器上的 MySQL 配置的有问题呢。 my.cnf ``` [client] default-character-set = utf8mb4 [mysqld] collation-server = utf8mb4_unicode_ci character-set-server = utf8mb4 ``` ``` 运行 show variables like 'char%'; 显示 character_set_client utf8 character_set_connection utf8 character_set_database utf8 character_set_filesystem binary character_set_results utf8 character_set_server utf8mb4 character_set_system utf8 character_sets_dir /usr/share/mysql/charsets/ ``` |
4 laoyuan 2017-01-11 21:55:42 +08:00 显示成????一堆问号 在哪里显示成问号,浏览器? shell ?这个问题是大问题 |
5 techmoe 2017-01-11 22:16:29 +08:00 via Android laravel 连接数据库用的什么编码? |
6 Kylinsun 2017-01-11 22:21:49 +08:00 via Android 看的时候是?,取出来就不是?了。 |
7 ruolis 2017-01-12 09:42:12 +08:00 我之前也遇到了这个问题 可是并没有发现好的方法 |
8 mingyun 2017-01-12 22:47:43 +08:00 utf8mb4 需要 mysql 5.6 支持 |