0

我在教义 2 中发现了数组类型的问题。

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

之后我得到以下期望:注意:unserialize()[function.unserialize]:/Applications/MAMP/htdocs/firegames.at/vendor/doctrine-dbal/lib/Doctrine/DBAL/Types 中 645 个字节的偏移量 456 处出错/ArrayType.php 第 46 行

所以我发现序列化的 sting 中的以下内容触发了预期: s:7:"Urani?"

但应该是乌拉尼奇。我尝试将字符串转换为 utf8,但它也失败了。字符无法编码!

如果我更换 ? 直接使用 ć 它可以按预期工作。同样奇怪的是 char ž 没有问题。那是唯一有效的。

所以有人知道如何解决这个问题吗?

4

1 回答 1

1

您需要做的是告诉 DBAL 在连接到数据库时执行“SET NAMES utf8”。这是通过将charset='utf8'参数传递给配置来完成的。您可能想阅读文档,您会发现这仅适用于 PDO MySQL 和 OCI (Oracle),但我假设您使用的是 MySQL。

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

于 2012-10-03T23:52:32.560 回答