查询参数的Symfony2 Charset

时间:2012-11-15 14:47:11

标签: symfony configuration character-encoding query-builder

我在Symfony2中有一个项目,它在我的本地主机上运行良好,但在将其移动到外部服务器后问题已经开始。

  1. 我没有在数据库中看到任何包含波兰字符的结果名称
  2. 在Profiler中我检查过查询:
    • '参数'部分具有正确的字符集
    • 'runnable query'具有相同的参数但具有错误的字符集
  3. 例如:

    (...) WHERE ((((c1_.name LIKE '%Å�%') OR (c3_.name LIKE '%Å�%') OR (..) Parameters: ['%ś%', '%ś%', (...)]

    所有数据库表都有charset = utf8_unicode_ci。

    在config.yml中我设置了

    doctrine: 
        dbal: 
          charset: UTF8 
    

    设置框架字符集不起作用。

    /config.php测试说:

    RECOMMENDATIONS:
      1. Install and enable a PHP accelerator like APC (highly recommended).
      2. Set short_open_tag to off in php.ini*.
      3. Set magic_quotes_gpc to off in php.ini*.
      * Changes to the php.ini file must be done in "/usr/local/php/php.ini".
    

    但不幸的是,我无法访问该服务器上的php.ini。这可能是magic_quotes_gpc导致了这个问题吗? 我也无法访问命令行,所以我通过ftp和phpmyadmin添加了项目(数据库,文件系统,供应商)。

    Becouse我的本地主机上没有问题我猜这是服务器配置的问题,我无法访问它,我看到的唯一方法是尝试更改QueryBuilder的charset配置。我在哪里可以做到的?你知道还有什么可能导致这个问题吗?

    谢谢

1 个答案:

答案 0 :(得分:9)

找到解决方案: 设置“SET NAMES utf8”我改变了我的学说配置

doctrine:
    dbal:
          driver:   %database_driver%
          host:     %database_host%
          port:     %database_port%
          dbname:   %database_name%
          user:     %database_user%
          password: %database_password%
          charset:  UTF8
          options:
             1002:  "SET NAMES 'UTF8'"

现在工作正常。