Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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
为什么我的php没有返回正确的json?(“预期UTF-8、UTF-16或UTF-32”)_Php_Json_Encoding - Fatal编程技术网

为什么我的php没有返回正确的json?(“预期UTF-8、UTF-16或UTF-32”)

为什么我的php没有返回正确的json?(“预期UTF-8、UTF-16或UTF-32”),php,json,encoding,Php,Json,Encoding,我在iOS中使用Alamofire时遇到问题,因为我的php似乎没有返回有效的json。我在编码数组之前添加了标题“header”(“Content-Type:application/json;charset=utf-8”);”,但它仍然不起作用。如果重要的话,我的数据库表中的某些列正在使用utf8mb4\U unicode\U ci编码这是我的php: <?php $con = mysqli_connect("localhost","hide","hide","hide");

我在iOS中使用Alamofire时遇到问题,因为我的php似乎没有返回有效的json。我在编码数组之前添加了标题“header”(“Content-Type:application/json;charset=utf-8”);”,但它仍然不起作用。如果重要的话,我的数据库表中的某些列正在使用utf8mb4\U unicode\U ci编码这是我的php:

<?php
    $con = mysqli_connect("localhost","hide","hide","hide");
    mysqli_set_charset($con, "utf8");

    if(mysqli_connect_errno())
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    $sql = "SELECT * FROM Business";

    if($result = mysqli_query($con, $sql))
    {
        $resultArray = array();
        $tempArray = array();

        while($row = $result->fetch_object())
        {
            $tempArray = $row;
            array_push($resultArray, $tempArray);
        }

        header("Content-Type: application/json; charset=utf-8");
        echo json_encode($resultArray);
    }

    mysqli_close($result);
    mysqli_close($con);
?>
[{"business_id":"0","imageURL":"imageUrl","shortDescription":"shortDescription","longDescription":"longDescription","price":"price","specialText":"specialText","order_rank":"1"}]
这里是格式化的json指定错误:

<?php
    $con = mysqli_connect("localhost","hide","hide","hide");
    mysqli_set_charset($con, "utf8");

    if(mysqli_connect_errno())
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    $sql = "SELECT * FROM Business";

    if($result = mysqli_query($con, $sql))
    {
        $resultArray = array();
        $tempArray = array();

        while($row = $result->fetch_object())
        {
            $tempArray = $row;
            array_push($resultArray, $tempArray);
        }

        header("Content-Type: application/json; charset=utf-8");
        echo json_encode($resultArray);
    }

    mysqli_close($result);
    mysqli_close($con);
?>
[{"business_id":"0","imageURL":"imageUrl","shortDescription":"shortDescription","longDescription":"longDescription","price":"price","specialText":"specialText","order_rank":"1"}]

如果表的字符集是
utf8mb4
,则需要设置
mysqli\u set\u字符集('utf8mb4')
,而不是
mysqli\u set\u字符集('utf8')
是字符集排序吗?如果是这样的话,我的“校勘”是拉丁文的,瑞典文的。我现在将我的表排序规则(字符集)更改为utf8\u general\u ci,现在我要看看情况是否更好:将表字符集更改为utf8并没有解决问题:(现在更改为utf8mb4\u unicode\u ciCollation不是字符集。字符集是符号的解码方式,而排序规则是字母的比较方式(加权)一个接一个。排序规则用于字母排序,它用作MySQL的查找表,因此它知道如何对重音字母等进行排序。表字符集应该是
utf8
,连接字符集应该是
utf8
。当
json\u encode
失败时,您可以随时检查
json\u last\u error\u msg()发生了什么
如果您打印了正在编码的数组,这样您就可以准确地发现哪个字符导致了问题。如果您的表的字符集是
utf8mb4
,您需要设置
mysqli\u set\u字符集('utf8mb4')
,而不是
mysqli\u set\u字符集('utf8')
是字符集排序规则吗?如果是,我的“排序规则”是拉丁文还是瑞典文?ci:s发现它是。我现在将我的表格排序规则(字符集)更改为utf8\u general\u ci,现在我要看看情况是否更好:将表格字符集更改为utf8并没有解决这个问题:(现在改为utf8mb4\u unicode\u)集合不是字符集。字符集是符号的解码方式,而排序规则是字母的比较方式(加权)一个接一个。排序规则用于字母排序,它用作MySQL的查找表,因此它知道如何对重音字母等进行排序。表字符集应该是
utf8
,连接字符集应该是
utf8
。当
json\u encode
失败时,您可以随时检查
json\u last\u error\u msg()发生了什么
如果您打印了正在编码的数组,这样您就可以准确地发现是哪个字符导致了问题,那就没问题了。