做了一个ajax的站,php后台处理完了数据库后,需要把结果以json数据的方式发到前端由js使用,编程这东西,编码总是会莫名其妙造成影响…
//$result是一个mysql查询的结果集
while($row = mysql_fetch_array($result)){
foreach ( $row as $key => $value ) {
$row[$key] = urlencode ( $value );
}
$urlencode_result[$i++]=$row;
}
$json = urldecode(json_encode($urlencode_result));
以上代码,首先把结果集中的每个值都urlencode来解决可能出现的编码问题,然后json_encode,把已经urlencode处理过的转成json数据,最后把json数据中被urlencode的数据恢复.
原理就是PHP的json_encode会把中文转成乱码,但是在json_encode前先urlencode,这样就没有中文了,转为json后没有问题,转换完,要用的时候在urldecode恢复中文数据.