Zend DB и кодировка - PullRequest
       27

Zend DB и кодировка

4 голосов
/ 10 июля 2010

Я только что столкнулся с чем-то довольно странным, я использую Zend Framework 1.10 с модулем Zend_Db_Table для чтения некоторых данных из базы данных.У самой базы данных, таблицы и рассматриваемых полей их сопоставление установлено на "utf8_general_ci", и все специальные символы отображаются правильно отформатированными в БД при проверке с помощью phpMyAdmin.Кроме того, сохранение с помощью Zend_Db_Table работает очень хорошо, но когда я читаю данные и просто отображаю их в своем браузере, они возвращаются как ISO-8859-1, а не как UTF8.Я заметил то же самое, когда пытался использовать json_encode (который работает только со строками UTF8 в качестве входных данных) для значения, возвращаемого из БД.

Как я могу установить, что Zend_Db_Table / Zend_Db_Row всегда должен работать с UTF8 и возвращать мнезначение UTF8?Я пока не установил ничего в отношении кодировки в своем приложении.

Большое спасибо за вашу помощь!

Ответы [ 4 ]

13 голосов
/ 20 декабря 2011

Просто обратите внимание.В моем случае это помогло:

    $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'
    ));
4 голосов
/ 06 августа 2010
resources.db.params.charset = utf8

как сказал Робертбасик.

1 голос
/ 10 июля 2010

Хорошо, только что нашел решение, попробуйте сделать это:

$db = Zend_Db::factory($config->database); // Setting up the DB
$db->query("SET NAMES 'utf8';");           // That's the magic line I was missing

Надеюсь, это поможет кому-то еще в какой-то момент:)

0 голосов
/ 10 июля 2010

Также вы можете просто вставить ключ "charset" с нужным значением в конфигурацию и DB-драйвер выполнит соответствующий запрос (в зависимости от используемой СУБД)Похоже, что в настоящее время (версия 1.10.5) почти все драйверы поддерживают это.

...