2012-10-01 24 views
0

我在doctrine2上发现了一个数组类型的问题。为什么Doctrine2数组类型序列化失败并显示一些特殊字符?

在我的应用程序中,我有一些用户来到frome斯洛文尼亚。这些家伙有一些奇怪的字符,如“čćšž”。在该值被序列化并存储到数据库后,问题就会发生。

之后我获得以下厚望: 注意:反序列化()[function.unserialize]:错误在/Applications/MAMP/htdocs/firegames.at/vendor/doctrine-dbal/lib/偏移456的645个字节Doctrine/DBAL/Types/ArrayType.php line 46

所以我发现以下内容在序列化sting触发期望: s:7:“Urani?”

但它应该是Uranić。我尝试将字符串转换为utf8,但它也失败。字符不能被编码!

这是Interresting,如果我更换?直接与它按预期工作。奇怪的是,字符没有问题。这是唯一可行的。

那么,任何人的想法如何解决?

回答

1

您需要做的是告诉DBAL在连接到数据库时执行“SET NAMES utf8”。这是通过将charset='utf8'参数传递给配置完成的。您可能想要阅读documentation,在这里您会发现只有PDO MySQL和OCI(Oracle)才可以这样做,但我认为您使用的是MySQL。

此外,您是否使用CHARACTER SET utf8 COLLATE utf8_slovenian_ci创建表格单元格?

+0

thx,为了您的反应,现在正在工作 – sensi