json_encode()为特殊字符返回null

时间:2016-08-02 22:54:50

标签: php mysql utf-8 turkish

我知道这方面有很多问题。我尝试了很多东西,但我无法解决它。也许是因为我的知识有限而无法执行解决方案?

我从mysql数据库中选择数据并在其上使用json_encode()函数。这适用,但包含特殊字符(土耳其语)的数据除外。对于这些值,json返回null。我该如何解决这个问题?

这是我简单的PHP代码:

<?php

require('init.php');

$sql="SELECT * FROM tablename;";

$result=mysqli_query($con,$sql);
$response=array();

while($row=mysqli_fetch_array($result)){


array_push($response,array("X"=>$row["x"],"Y"=>$row["y"]));

}

echo json_encode($response);


?>

在mysql中,列设置为utf8-turkish。我尝试过设置标题,调用一些函数,用utf8编码重新创建php文件等等。但是没有一个能够正常工作。

2 个答案:

答案 0 :(得分:2)

在我的连接脚本中使用mysqli_set_charset函数解决了这个问题。在类似的问题上找不到这个。感谢用户&#34; RiggsFolly&#34;

答案 1 :(得分:-1)

添加TRUEjson_decode($string, TRUE);这将获得utf8个字符而不是Unicode转义序列(如\u00d6)。

在连接,表格和html中,您需要utf8(或utf8mb4)。请参阅this