(已解决) Laravel 5.2 怎么处理 Emoji 表情?

问答 Dee ⋅ 于 2017-01-11 20:11:05 ⋅ 最后回复由 coodeer 2017-01-11 22:18:59 ⋅ 377 阅读

已经解决了,存储评论的content字段编码没改过来。。。

项目中有个评论功能,微信用户授权登录后,需要显示用户的昵称及评论内容。
用户的昵称和评论内容都会出现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表情。

回复数量: 5
  • leo MOD 不会写前端的后端不是好运维
    2017-01-11 20:27:20

    数据库结构对应的修改了吗

  • coodeer PHPer
    2017-01-11 20:37:07 ⋅ via iOS 客户端

    修改成utf8mb4就足够了,至于为什么显示???,就和你的系统或者你的mysql终端有关系了。emoji这东西需要你的系统或宿主软件的支持。

  • Dee
    2017-01-11 20:39:46

    @leo 改了,字段也改成utf8mb4了。服务器的my.cnf需要改么?
    目前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/
  • Dee
    2017-01-11 20:41:13

    @coodeer 麻烦看下我3楼的回复,是服务器上的mysql没配置好么?谢谢

  • coodeer PHPer
    2017-01-11 22:18:59

    @Dee 没必要修改MySQL配置的,依次检查你的数据库、表、字段的字符集设置即可

暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter