Doctrine2没有保存utf-8

时间:2013-04-09 21:05:37

标签: symfony utf-8 doctrine-orm

在我的Symfony 2应用程序中,我的Doctrine charset设置为UTF8

我有一个以开头的字符串 使用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",

这到底发生了什么?

1 个答案:

答案 0 :(得分:5)

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

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

MySQL UTF8实际上并不支持所有UTF8,并且基本上根本不能用于4字节字符。 See this answer有关如何解决此问题的建议,但基本上你需要切换到使用'utf8mb4_unicode_ci'的排版'utf8mb4_unicode_ci',如果你想存储这些字符的话。