Json编码由于奇怪的字符而失败.带$pdo->;逃离;报价($data)不起作用


Json Encoding fails because of strange chars. Escaping with $pdo->quote($data) not working

我查询数据库,然后我想用json编码响应。

由于"name"answers"description"这两个字段包含一些诡异的字符,json的编码无法成功。

在我对从数据库接收的数组进行编码后,json只有4个字符的长度。

如果我不从数据库中查询包含那些非常奇怪的字符的表"name"answers"description",那么一切都在运行。我可以对数组进行编码,然后使用它。

我试过了$pdo->报价($data[名称])和$pdo->报价($data[description]),逃跑已经完成,但问题没有解决。。json仍然被那些奇怪的字符搞砸了。

你知道可能会发生什么吗?

我修复了它。我必须设置数据库连接的字符集:
try {
$pdo = new PDO("mysql:host={$dbhost};dbname={$dbname}", $dbuser, $dbpass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo -> exec('SET NAMES utf8'); // FIX
}
catch( PDOException $excepiton ) {
echo "Connection error :" . $excepiton->getMessage();
}
?>