Symfony Doctrine:不存储表情符号



我正在尝试使用表情符号保存文本。但是,表情符号不存储在文本中。而不是表情符号,我在数据库中得到?

 # Doctrine Configuration
 doctrine:
     dbal:
         driver: pdo_mysql
         host: '%database_host%'
         port: '%database_port%'
         dbname: '%database_name%'
         user: '%database_user%'
         password: '%database_password%'
         charset: utf8mb4

下课后我想保存表情符号的地方

/**
 * Post
 *
 * @ORMTable(name="post", options={"collate"="utf8mb4_unicode_ci", "charset"="utf8mb4"})
 * @ORMEntity(repositoryClass="AppBundleRepositoryPostRepository")
 */
class Post
    {
    /**
     * @ORMColumn(type="integer", name="id")
     * @ORMId
     * @ORMGeneratedValue(strategy="AUTO")
     */
    private $id;
    /**
     * @ORMColumn(type="text", nullable=false, name="text")
     */
    private $text;
 }

开机自检正文

 {"text": "test 😀 test"}

数据库中的text

 test ? test
我知道

已经有一段时间了,但这为我解决了它(Symfony 5):

  • config/packages/doctrine.yaml 下,在 dbal 下,您必须添加键值对charset: utf8mb4 。配置记录在此处:https://symfony.com/doc/current/reference/configuration/doctrine.html
  • 如果这不起作用,则必须检查.env(或.env.local)中DATABASE_URL是否未覆盖字符集。如果它正在覆盖它,您只需将其更改为 utf8mb4 .

这是假设数据库是utf8mb4。如果不是(并且您无法更改它),则必须转义表情符号字符。

你不想设置character_set_client _connection_results .

示例 MySQL 查询可能如下所示

SET character_set_client = 'utf8mb4';
SET character_set_results = 'utf8mb4';
SET character_set_connection  = 'utf8mb4';
您可能需要

将MySQL表更改为charset=utf8mb4。

如何在 mysql 中插入 utf-8 mb4 字符(ios5 中的表情符号)?

相关内容

  • 没有找到相关文章

最新更新