Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php zenddb与编码_Php_Zend Framework_Encoding_Utf 8_Zend Db - Fatal编程技术网

Php zenddb与编码

Php zenddb与编码,php,zend-framework,encoding,utf-8,zend-db,Php,Zend Framework,Encoding,Utf 8,Zend Db,我刚刚遇到了一些非常奇怪的事情,我使用Zend Framework 1.10和Zend_Db_Table模块从数据库中读取一些数据。数据库本身、表和相关字段的排序规则都设置为“utf8\u general\u ci”,使用phpMyAdmin检查时,所有特殊字符在数据库中的格式都正确。另外,使用Zend_Db_表保存也很好,但是当我读取数据并将其回显到浏览器时,返回的是ISO-8859-1,而不是UTF8。我在尝试对从DB返回的值使用json_encode(仅适用于UTF8字符串作为输入)时注意

我刚刚遇到了一些非常奇怪的事情,我使用Zend Framework 1.10和Zend_Db_Table模块从数据库中读取一些数据。数据库本身、表和相关字段的排序规则都设置为“utf8\u general\u ci”,使用phpMyAdmin检查时,所有特殊字符在数据库中的格式都正确。另外,使用Zend_Db_表保存也很好,但是当我读取数据并将其回显到浏览器时,返回的是ISO-8859-1,而不是UTF8。我在尝试对从DB返回的值使用json_encode(仅适用于UTF8字符串作为输入)时注意到了同样的情况

如何设置Zend_Db_Table/Zend_Db_行始终与UTF8一起工作并返回UTF8值?我还没有在我的应用程序中设置任何有关编码的内容


非常感谢你的帮助

好的,刚刚找到解决方案,请尝试执行以下操作:

$db = Zend_Db::factory($config->database); // Setting up the DB
$db->query("SET NAMES 'utf8';");           // That's the magic line I was missing
希望这对其他人有所帮助:)

此外,您可以将具有所需值的“charset”键放入config,DB driver将执行适当的查询(取决于所使用的DBMS)。似乎目前(版本1.10.5)几乎所有的驱动程序都支持这一点

resources.db.params.charset = utf8

就像robertbasic所说的。

请注意。就我而言,这一点有助于:

    $this->db = new Zend_Db_Adapter_Pdo_Mysql(array(
        'host'     => $config['db_hostname'],
        'username' => $config['db_username'],
        'password' => $config['db_password'],
        'dbname'   => $config['db_database'],
        'charset'  => 'utf8'
    ));

只需将:
resources.db.params.charset=utf8
添加到你的app.init对我来说并不合适,但正如@robertbasic在app ini中下面评论的“resources.db.params.charset=utf8”修复了这个问题。这是一个公认的答案,因为投票人显然支持这个解决方案(以及@robertbasic的评论)