2012-11-06 61 views
2

我把一些数据在我的MySQL数据库中工作正常。 但是,当我与json_encode的数据,我得到IST回来这样的:json_encode utf8

{"idpostdata":"49","artID":null,"timestamp":"06.11.2012 13:35","lat":"51.496911","lon":"7.4022327","cellID":null,"road":"Wittener Stra\u00dfe","suburb":"Eichlinghofen","city":"Dortmund","postdatacol":null,"state_district":"Regierungsbezirk Arnsberg","state":"North Rhine-Westphalia","country_code":"de"} 

你看"road":"Wittener Stra\u00dfe"是不正确的名称就必须Wittener大街

我的代码:

<?php 
$sql = mysql_query("SELECT * FROM postdata"); 

while ($ds = mysql_fetch_assoc($sql)) 
    $output[]=$ds; 
echo "{uTraf:"; 
    print(json_encode($output)); 
echo "}"; 
mysql_close($dz); 
?> 

什么是错的?

+0

这是不正确的,因为'\ u00df'是德国尖锐S(ß)的JSON转义序列。问题的关键是逃避真正需要的,如果不是如何避免。 – Codo

回答

10

出了什么问题?

什么都没有。 \uxxxx是JSON编码UTF-8字符的方式。

当您使用适当的JSON解码方法解码JSON时,它会再次看起来很顺利。

1

没有错,它是json_encoding的一部分,以防止错误的字符转换:

关注一下吧:\ u00df

http://www.utf8-chartable.de/

当你json_decode($string);应该再次

-1

使用和addslashes固定当你将json数据保存到mysql时。当你获得数据时,它会是OK的。