【问题标题】:How to store emoji string in Database using Laravel with Orm Query如何使用 Laravel 和 Orm Query 将表情符号字符串存储在数据库中
【发布时间】:2016-07-28 12:45:36
【问题描述】:

我想在数据库中存储特殊字符,反之亦然,例如情感,但是当我尝试在数据库中保存时,我得到问号。

【问题讨论】:

    标签: laravel orm emoji


    【解决方案1】:

    在您的database.php 文件中,确保将charsetcollation 设置为utf8mb4

    'mysql' => [
                'driver'    => 'mysql',
                'host'      => env('DB_HOST', 'localhost'),
                'database'  => env('DB_DATABASE', 'forge'),
                'username'  => env('DB_USERNAME', 'forge'),
                'password'  => env('DB_PASSWORD', ''),
                'charset'   => 'utf8mb4',
                'collation' => 'utf8mb4_unicode_ci',
    

    你的表情列应该是一个字符串:

    $table->string('emoji');

    【讨论】:

    • database.php 在 laravel 5 中的位置在哪里?
    • config 文件夹中的@Webinan
    • 哦,我正在使用 Lumen,但我没有名为 config 的文件夹。
    • @Webinan 在这种情况下,根据 Lumen 文档:you may use the DB_* configuration options in your .env configuration file to configure your database settings, such as the driver, host, username, and password.
    • 谢谢! DB_CHARSET + DB_COLLECTION 完成了这项工作。 :*
    【解决方案2】:

    1) 确保您使用的是 MYSQL 5.5.3 或更高版本,然后您可以将排序规则更改为 utf8mb4_something,

    2) 确保将要接收表情符号的表列的排序规则设置为 utf8mb4_something

    如果仍有问题,请编辑您的 database.php 配置文件并更新以下内容,

        'charset' = 'utf8mb4';
    'collation' = 'utf8mb4_unicode_ci'
    

    【讨论】:

      【解决方案3】:

      除了上面的答案,请确保清除缓存并迁移刷新以更新 MySQL 表。

      【讨论】:

        【解决方案4】:

        如果您使用 websocket 进行聊天和发送表情,则必须重新启动 websocket。

        你可以找到并杀死所有的 websocket 进程,比如 sudo kill (Your PID) 不带圆括号。

        对于 ?标记,没关系,因为某些浏览器或 MySQL 编辑器不支持表情符号,所以它们会显示问题 (?) 标记。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-01-12
          • 1970-01-01
          • 2018-06-20
          • 2016-08-27
          • 2021-02-28
          • 1970-01-01
          • 1970-01-01
          • 2019-10-09
          相关资源
          最近更新 更多