【问题标题】:Zend project - mysql not fetching UTF8Zend 项目 - mysql 不获取 UTF8
【发布时间】:2011-05-17 08:35:03
【问题描述】:

我有一个使用 mysql 的 Zend 项目 - 我的数据库连接排序规则是 utf8_unicode_ci,我的表排序规则是 utf8_unicode_ci。我已经成功存储了一些包含 UTF8 字符的记录,但是当我尝试从数据库中获取它们时它们被破坏了,例如:

DVI•1500HD 被提取为 DVI•1500HD

我已尝试在 application.ini 中设置 resources.db.params.charset = utf8,但无法解决问题。

有什么想法吗?

【问题讨论】:

    标签: php mysql utf-8


    【解决方案1】:

    尝试将以下行添加到您的配置中。

    resource.db.params.driver_options.1002 = "SET NAMES utf8"
    

    对于你的 Zend Framework 版本,需要这个命令来改变 mysql 的传输编码。给定的命令是实例化数据库适配器时执行的第一件事。

    【讨论】:

    • 它仍然不起作用:(我在直接使用 $db = Zend_Db_Table::getDefaultAdapter(); $db->query('SET NAMES UTF8'); 之前尝试过没有成功。
    • 您使用的是什么 Zend_Db_Adapter 类。我用 Zend_Db_Adapter_Pdo_Mysql 获得了最好的体验。
    • 您如何尝试获取数据库内容。如果你使用 Zend_Db_Table 但没有设置 DefaultAdapter 你的适配器不使用。
    • 嗯,我使用扩展 Zend_Db_Table_Abstract 的类,我认为 defaultAdapter 是通过指定 application.ini 中的设置来设置的。不是吗?
    • 我将它包含在我的 application.ini - resources.db.isDefaultTableAdapter = true
    【解决方案2】:

    也许您从数据库中获得的内容是 UTF8,但在您的演示文稿中出现了错误。在网页中展示时,您是否发送了正确的内容类型标头?该页面是否也保存为 UTF8 文档?

    【讨论】:

      【解决方案3】:

      我已经尝试了上面的所有解决方案,最后在 freetds.conf 中修复了这个

      (/etc/freetds/freetds.conf)

      [我的服务器]

      tds 版本 = 8.0

      客户端字符集 = UTF-8

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-05
        • 1970-01-01
        • 2011-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多