Php json返回损坏的数据

Php json返回损坏的数据,php,mysql,json,character-encoding,Php,Mysql,Json,Character Encoding,我正在玩一个api,它只从我的数据库中读取数据并以json格式返回数据 在phpMyAdmin中,句子是完美的(我使用utf8_general输入csv)。例如: A line that uses 'r and special chars etc 但当我回显json时,我得到了: A line that uses ///\\/\/\/r and special chars etc 首先我得到了空对象,所以我使用: mysql_set_charset('utf8', $l

我正在玩一个api,它只从我的数据库中读取数据并以json格式返回数据

在phpMyAdmin中,句子是完美的(我使用utf8_general输入csv)。例如:

    A line that uses 'r and special chars etc
但当我回显json时,我得到了:

    A line that uses ///\\/\/\/r and special chars etc
首先我得到了空对象,所以我使用:

   mysql_set_charset('utf8', $link);
但我仍然能找回损坏的数据

更新:

更多信息:

mysql_set_charset('utf8',$link);

/* grab the posts from the db */
$query = "SELECT * FROM huren WHERE 1";

$result = mysql_query($query,$link) or die('Errant query:  '.$query);

// check row count 
$amount = mysql_num_rows($result);

/* create one master array of the records */
$houses = array();
if(mysql_num_rows($result)) {
    while($post = mysql_fetch_assoc($result)) {
        $houses[] = $post;
    }
}

/* output in necessary format */

    header('Content-type: application/json');
 $changed_json= str_replace('\\/', '/',json_encode(array('House'=>$houses)));
echo str_replace('\\\\', '\\',$changed_json);

请再给我们一点时间继续。你能告诉我们编码字符串的部分吗

这似乎是自己的工作,所以一定有一些复杂的互动从其他地方

<?php // RAY_temp_foo.php
error_reporting(E_ALL);
echo '<pre>';

$str = <<<END
A line that uses 'r and special chars etc
END;

$jso = json_encode($str);
$new = json_decode($jso);

// THESE SHOULD MATCH
var_dump($str);
var_dump($new);

echo PHP_EOL;
var_dump($jso);

替换操作是怎么回事
json_encode
返回完全有效的json,表示您提供的确切输入,或者返回
NULL
,因为存在数据不在UTF-8中等问题。您不应该对
json\u encode
返回的字符串执行任何操作!如果您没有得到
NULL
,那么您已经赢了,只需要回显它

它将只适用于以下情况:


字符集实际上并不重要,因为默认情况下,
json\u encode
生成纯ASCII输出。这是因为默认情况下,unicode字符以unicode转义序列表示,例如,
\uxxx

Hi-Ray。欢迎来到SO!我以前也是一头猪。只是想让你清醒一下。我这样问更适合作为对原始帖子的评论,而不是作为可能的答案。因为如果我不这样做,更糟糕的是,我会在一些属性中得到这样的结果:http:\/\somesite.com/\/\example@user1876006 . 当您解码json时,它将变成
http://somesite.com/example
请再说一遍。这样做的原因是,在html页面上嵌入脚本元素内回显json时,针对xss的默认安全性。不要看编码的json,因为您永远不会使用它。在解码json.omg之后,您需要查看结果。我原以为“闭嘴”,但在您解释并尝试之后,一切正常!我在xcode中解码json,所以没有必要修复它。。。谢谢你的提示!!你解决了3个问题lolHeh,你的SQL查询在德语中读起来很有趣(“huren”在德语中是“妓女”的意思)
header('Content-type: application/json');
echo json_encode(array('House'=>$houses));