PDO + MySQL и нарушенная кодировка UTF-8

я использую библиотеку PDO с базой данных MySQL на PHP, но если я вставляю какие-либо данные, закодированные в UTF-8, например, арабские слова, они вставляются в базу данных, но как ????????? .

В моей собственной структуре после создания PDO-соединения я отправляю два запроса - SET NAMES utf8 и SET CHARACTER УСТАНОВИТЕ utf8 . Он по-прежнему не работает.

Пример:

loadclass('PDO', array(
    sprintf(
        'mysql:host=%s;port=%s;dbname=%s',
        confitem('database', 'host'),
        confitem('database', 'port'),
        confitem('database', 'name')
    ),
    confitem('database', 'username'),
    confitem('database', 'password'),
    array('PDO::ATTR_PERSISTENT' => confitem('database', 'pconnect'))
));
$this->query('SET NAMES ' . confitem('database', 'charset'));
$this->query('SET CHARACTER SET ' . confitem('database', 'charset'));

Временное решение: Используйте функцию json_encode для преобразования данных перед их вставкой в ​​базу данных и используйте json_decode для их декодирования после выборки. Вот как я это делаю сейчас.

29
задан Peter Mortensen 8 July 2019 в 15:37
поделиться