Laravel 5.2 怎么处理 Emoji 表情?

2017-01-11 20:18:31 +08:00
 anai1943

项目中有个评论功能,微信用户授权登录后,需要显示用户的昵称及评论内容。

用户的昵称和评论内容都会出现 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 表情。

4406 次点击
所在节点    MySQL
8 条回复
jswh
2017-01-11 20:24:30 +08:00
对应字段的编码检查了么?
bdbai
2017-01-11 20:55:30 +08:00
utf8mb4
anai1943
2017-01-11 21:01:54 +08:00
@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/
```
laoyuan
2017-01-11 21:55:42 +08:00
显示成????一堆问号

在哪里显示成问号,浏览器? shell ?这个问题是大问题
techmoe
2017-01-11 22:16:29 +08:00
laravel 连接数据库用的什么编码?
Kylinsun
2017-01-11 22:21:49 +08:00
看的时候是?,取出来就不是?了。
ruooooooli
2017-01-12 09:42:12 +08:00
我之前也遇到了这个问题 可是并没有发现好的方法
mingyun
2017-01-12 22:47:43 +08:00
utf8mb4 需要 mysql 5.6 支持

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/333956

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX