如何在PHP中的json_encode之后阅读亚洲字符(日语,中文)

时间:2010-10-08 20:52:51

标签: php iphone json unicode cjk

我已阅读有关该主题的每篇文章,但我认为我没有找到对我的问题的回复,这让我发疯了。

我有几个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

2 个答案:

答案 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。