我在 doctrine2 中发现了数组类型的问题。
在我的应用程序中,我有一些来自斯洛文尼亚的用户。这些家伙有一些奇怪的字符,如"čćšž"。序列化此值并将其存储到数据库中后,将出现问题。
之后,我得到了以下期望:注意:unserialize() [function.unserialize]:/Applications/MAMP/htdocs/firegames.at/vendor/doctrine-dbal/lib/Doctrine/DBAL/Types/ArrayType.php第 46 行中 645 字节的偏移量 456 处出错
所以我发现序列化刺痛中的以下内容触发了期望:s:7:"天王星?
但它应该是乌拉尼奇。我尝试将字符串转换为 utf8,但它也失败了。字符无法编码!
如果我直接用ć替换?,它会像预期的那样工作。同样奇怪的是,字符没有问题。这是唯一有效的方法。
所以有人知道如何解决这个问题吗?
做的是告诉DBAL在连接到数据库时做"设置名称utf8"。这是通过将 charset='utf8'
参数传递给配置来完成的。你可能想阅读文档,你会发现这只能通过PDOMySQL和OCI(Oracle)来实现,但我假设你使用的是MySQL。
此外,您是否使用 CHARACTER SET utf8 COLLATE utf8_slovenian_ci
创建了表格单元格?