Php json返回损坏的数据
我正在玩一个api,它只从我的数据库中读取数据并以json格式返回数据 在phpMyAdmin中,句子是完美的(我使用utf8_general输入csv)。例如: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
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));