我正在尝试使用表情符号保存文本。但是,表情符号不存储在文本中。而不是表情符号,我在数据库中得到?
。
# 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 中的表情符号)?