Я использую ZF2 и базу данных mysql. Проблема заключается в кодировке latin1, но на данный момент мне не нужно это менять. Поэтому я использую много уловок, чтобы заставить мой водитель PDO, чтобы мои результаты на UTF-8:Преобразование данных UTF-8
Это один в local.php:
return array(
'db' => array(
'username' => $dbParams['username'],
'dsn' => 'mysql:dbname='.$dbParams['database'].';host='.$dbParams['hostname'].';charset=utf-8',
'password' => '',
'charset' => 'utf-8',
),
);
И это один в global.php
return array(
'db' => array(
'charset' => 'utf-8',
'driver' => 'Pdo',
'driver_options' => array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES UTF8",
PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET UTF8",
),
),
'service_manager' => array(
'factories' => array(
'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory',
)
),
'translator' => array(
'locale' => 'fr_FR'
),
);
Но когда я делаю:.
эхо "КОДИРОВАНИЕ =" mb_detect_encoding ($ myDataBaseRetrievedVar);
Это говорит мне: ASCII! И для специальных символов я не могу сделать json_encode.
Является ли сама база данных utf8 закодированной? Попробуйте запустить запрос 'SHOW CREATE TABLE yourTableHere'. – Qirel
Нет базы данных Latin1, как я сказал. Но я не должен прикасаться к нему на данный момент ... – Amelie
База данных * charset *, database * collation * (charset - это не то же самое, что и для сортировки), и SQL-соединение должно быть одинаковой кодировкой. – Qirel