为什么 Doctrine2 数组类型序列化失败并显示一些特殊字符



我在 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 创建了表格单元格?

相关内容

  • 没有找到相关文章

最新更新