我已阅读有关该主题的每篇文章,但我认为我没有找到对我的问题的回复,这让我发疯了。
我有几个php文件,一个将数据存储到mySQL db中,另一个读取这些数据:我从世界各地获取数据,似乎我成功地以正确的方式存储亚洲字符,但是当我尝试读取那些我无法获得这些数据的数据。
我得到了很多其他用户?而不是正确的字符。
我得到的PHP文件的顶部:
header('Content-Type: application/json; charset=utf-8');
然后
mysql_query("SET CHARACTER SET utf8", $link);
mysql_query("SET NAMES 'utf8'", $link);
然后
$fab[] = array_map(utf8_encode,$array);
如果我print_r ($fab)
我丢失了亚洲字符: - (
然后当我这样做时:
$json_string = json_encode($fab); //originale
我得到的是"??"
。
如何正确获得正确的字符?然后传递json字符串 到iPhone客户端。
任何建议或帮助都会受到赞赏。
无论如何,谢谢你, 的Fabrizio
答案 0 :(得分:2)
好像你是双重编码吗?如果从mysql中获取已经是utf8编码的数据,那么$fab[] = array_map(utf8_encode,$array);
的重点是什么?
2天前,当我接受来自ExtJs表单的utf8数据并且它搞砸了时,就有类似的事情了。这是因为我对从脚本(在utf8中)收到的数据使用了utf8_encode。所以我通过双重编码打破了它。也许你的情况相同
答案 1 :(得分:0)
问题是Tseng所说的:阵列上的双重编码:我认为我做了正确的测试但是我没有做过。
所以我需要的唯一代码是:
while($ obj = mysql_fetch_object($ rs)){ $ arr [] = $ obj; }
$ json_string = json_encode($ arr); echo($ json_string);
再次Tseng,thanx。