Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从mysql检索的PHP json格式表示Unicode格式的数据_Php_Mysql_Json - Fatal编程技术网

从mysql检索的PHP json格式表示Unicode格式的数据

从mysql检索的PHP json格式表示Unicode格式的数据,php,mysql,json,Php,Mysql,Json,我的mysql数据库中有一些波斯数据,检索到的数据包含波斯值的C/C++/Java源代码编码数据,如下所示 {“服务器_响应”:[{“hp_编号”:“09301234567”,“名称”:“\u0633”}]}而在名称列中有一个波斯语字符(س) php代码如下所示: <?php require "init.php"; $hp_no = "09301234567"; mysqli_set_charset($con,"utf8"); $sql = "select * From users

我的mysql数据库中有一些波斯数据,检索到的数据包含波斯值的C/C++/Java源代码编码数据,如下所示

{“服务器_响应”:[{“hp_编号”:“09301234567”,“名称”:“\u0633”}]}而在名称列中有一个波斯语字符(س)

php代码如下所示:

<?php

require "init.php";

$hp_no = "09301234567";
mysqli_set_charset($con,"utf8");

$sql = "select * From users Where hp_number = ('$hp_no');";
$result = mysqli_query($con,$sql);

$response = array();

while ($row = mysqli_fetch_array($result)) {
  array_push($response,array("hp_number"=>$row[1],"name"=>$row[3]));
}

echo json_encode(array("server_response"=>$response));

mysqli_close($con);
?>

通过在编码时添加JSON_UNESCAPED_UNICODE作为另一个参数,我可以成功地解决这个问题。因此代码行更改为


echo json_encode(数组(“服务器响应”=>$response),json_UNESCAPED_UNICODE)

请仅使用准备好的语句请参见@nbk,因为它只是一个测试应用程序,我没有遵循准备好的语句结构,我怀疑这不会解决问题,不是吗?是的,但即使只有测试运行也应该是安全的,以便在上线时进行准备。但你是对的,我不明白你为什么会得到这个,整个链似乎是UTF8,即使切换到PDO也没有帮助。但是只要没有答案,为什么不给它一个答案呢try@nbk感谢您的指导和帮助,我已经将准备好的语句结构应用到代码中,但问题仍然存在。