4

在我的 Symfony 2 应用程序中,我的 Doctrine 字符集设置为UTF8.

我有这个以 Using mb_detect_encoding 开头的字符串,它是 UTF-8。

但是将其保存到 Doctrine 实体的文本字段中会给我以下错误:

SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\\xF0\\x9F\\x8C\\xB9 h...' for column 'text' at row 1",

这里到底发生了什么?

4

1 回答 1

6

错误消息告诉您发生了什么。数据库引擎无法将字符串值 \xF0\x9F\x8C\xB9 存储在数据库中。

这似乎是字符U+1F339 ROSE,它位于补充多语言平面中,需要 4 个字节来存储。

MySQL UTF8 实际上并不支持所有的 UTF8,而且对于 4 字节字符基本上根本不起作用。请参阅此答案以获取有关如何修复它的建议,但基本上,如果您想存储这些字符,则需要在任何地方使用排序规则“utf8mb4_unicode_ci”切换为使用“utf8mb4”字符集。

于 2013-04-10T10:56:41.443 回答