V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
anai1943
V2EX  ›  MySQL

Laravel 5.2 怎么处理 Emoji 表情?

  •  
  •   anai1943 · 2017-01-11 20:18:31 +08:00 · 4395 次点击
    这是一个创建于 2882 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    8 条回复    2017-01-12 22:47:43 +08:00
    jswh
        1
    jswh  
       2017-01-11 20:24:30 +08:00
    对应字段的编码检查了么?
    bdbai
        2
    bdbai  
       2017-01-11 20:55:30 +08:00 via Android
    utf8mb4
    anai1943
        3
    anai1943  
    OP
       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
        4
    laoyuan  
       2017-01-11 21:55:42 +08:00
    显示成????一堆问号

    在哪里显示成问号,浏览器? shell ?这个问题是大问题
    techmoe
        5
    techmoe  
       2017-01-11 22:16:29 +08:00 via Android
    laravel 连接数据库用的什么编码?
    Kylinsun
        6
    Kylinsun  
       2017-01-11 22:21:49 +08:00 via Android
    看的时候是?,取出来就不是?了。
    ruooooooli
        7
    ruooooooli  
       2017-01-12 09:42:12 +08:00
    我之前也遇到了这个问题 可是并没有发现好的方法
    mingyun
        8
    mingyun  
       2017-01-12 22:47:43 +08:00
    utf8mb4 需要 mysql 5.6 支持
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2479 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:01 · PVG 00:01 · LAX 08:01 · JFK 11:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.