Я использую библиотеку PDO с базой данных MySQL на PHP, но если я вставлю какие-либо данные, закодированные в UTF-8, например арабские слова, она будет вставлена в базу данных, но как ?????????
.
Вмой собственный фреймворк, после того как я создаю соединение PDO, я отправляю два запроса - SET NAMES utf8
и SET CHARACTER SET 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
для декодированияпосле получения.Вот как я это делаю сейчас.