我在doctrine2发现了数组类型的问题。
在我的应用程序中,我有一些用户来自斯洛文尼亚。这些人有一些奇怪的字符,如“čćšž”。此值被序列化并存储到数据库后,会出现问题。
之后我得到以下的期望: 注意:unserialize()[function.unserialize]:/Applications/MAMP/htdocs/firegames.at/vendor/doctrine-dbal/lib/Doctrine/DBAL/Types/ArrayType.php第46行中的645字节偏移量456处的错误< / p>
所以我发现序列化刺痛中的以下内容触发了预期: s:7:“Urani?”
但应该是Uranić。我试图将字符串转换为utf8但它也失败了。字符不能被编码!
如果我更换它,这是有趣的吗?直接与ć它按预期工作。同样奇怪的是charž没有问题。这是唯一有效的。
所以任何人都知道如何解决这个问题?
答案 0 :(得分:1)
您需要做的是告诉DBAL在连接到DB时执行“SET NAMES utf8”。这是通过将charset='utf8'
参数传递给配置来完成的。您可能想要阅读documentation,您会发现这只能用于PDO MySQL和OCI(Oracle),但我假设您使用的是MySQL。
此外,您是否使用CHARACTER SET utf8 COLLATE utf8_slovenian_ci
创建了表格单元格?