PDO + MySQL和损坏的UTF-8编码
2022-08-30 11:54:46
我在PHP中将PDO库与MySQL数据库一起使用,但是如果我插入任何以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