带有 Symfony2 的 Doctrine2 无法识别数据库字符集和排序规则
Posted
技术标签:
【中文标题】带有 Symfony2 的 Doctrine2 无法识别数据库字符集和排序规则【英文标题】:Doctrine2 with Symfony2 not recognizing db charset and collation 【发布时间】:2013-04-28 07:52:14 【问题描述】:我试图让 Doctrine2 在 debian 挤压系统上与 Symfony2 中的 mysql 数据库一起正常工作。 数据库的字符集和排序规则设置为 utf8 和 utf8_general_ci,数据库是通过读取 sql 脚本手动创建的。
现在我为其中一张带有丹麦特殊字符(如 æøå)的表格输入了一些值,但它们根本无法正确显示。
我的 parameters.yml 设置了编码:utf8,并且在我的 config.yml 中,学说配置具有:
doctrine:
dbal:
driver: %database_driver%
host: %database_host%
port: %database_port%
dbname: %database_name%
user: %database_user%
password: %database_password%
charset: UTF8
当我在 mysql 控制台中进行选择时,字符显示正确,并且如果我尝试用 som 硬编码值替换控制器中的输出数组,那么问题似乎肯定源于某种错误/错误教义2配置...
有人知道如何解决这个问题吗?
非常感谢。
【问题讨论】:
【参考方案1】:好吧,我终于弄明白了……这种配置有某种双重编码。注释掉 charset: UTF8 from dictionary dbal config 解决了这个问题。
【讨论】:
【参考方案2】:问题可能出在您的应用程序字符集中。可以在config.yml中找到
framework:
charset: UTF-8
#translator: fallback: lt
#secret: %secret%
#other options
【讨论】:
谢谢,很遗憾不是这样。我得到一个运行时异常,指出此设置已被弃用,我应该向 AppKernel.php 添加一个 getCharset() 方法,返回“UTF8”。然而,这也不能解决它...... 如果你能添加你正在使用的 Symfony 和 Doctrine 版本,也许我可以提供更多帮助。 感谢 Laurynas 的努力。我发现问题出在哪里,我还不能接受我自己的答案,config.yml 中教义的 dbal 部分的字符集设置显然使数据的 utf8_encode 已经是 utf8(我的猜测),所以删除这个线解决了它。这应该在文档中以节省像我这样的傻瓜的麻烦;-)以上是关于带有 Symfony2 的 Doctrine2 无法识别数据库字符集和排序规则的主要内容,如果未能解决你的问题,请参考以下文章
在 Doctrine2/Symfony2 中的重复条目上插入忽略
Symfony2 / Doctrine2:不要在模式上删除全文索引:更新
如何在 Doctrine2 (Symfony2) 中按案例排序