2015-11-20 58 views
0

从联机数据库中检索一些数据时,我无法弄清楚为什么有些字符会被“误解”。JSON通信破坏特殊字符

我通过PHP应用程序发送来自服务器的数据,例如:

header('Content-Type: application/json'); 
// tried also header('Content-Type: application/javascript'); 
// tried also header('Content-Type: application/json; charset=utf-8'); 
echo json_encode($object); 

如果我测试消息时,JSON编码串正确地包含了以下的字符串\u00ec,其表示字母ì

然而,在客户端,当我检查未解析字符串,我看到以下字符串代替:\u00c3\u00ac,其代表分别为:ì(这种情况发生的所有特殊字符,如èéàòùü等)。

因此,当我在响应中调用JSON.parse()时,我看到错误的字符。

任何想法我做错了什么?

+0

你在json中编码的内容是什么? –

+0

这是一个相当复杂的数组,但基本上所有东西都是在JSON中正确解析的,这就是为什么我只包含给我麻烦的字符。例如,现在我正在查看的字符串测试问题中有'lunedì'(星期一)这个词,并且''在给json编码之前给我头痛...... – ghego1

+0

,打印$ object '变量并检查。 –

回答

1

如果您使用PHP 5.4 <,则可以将JSON_UNESCAPED_UNICODE作为json_encode函数的第二个参数。

+0

没有,仍然在5.3。我打算升级,但那是一个很长时间的事情,而现在我需要在短时间内解决这个问题 – ghego1

+0

然后看看这个:http://stackoverflow.com/questions/24932572/ how-to-save-a-json-as-unescaped-utf-8-in-php-5-3 – Masious

+0

谢谢!我仍然在测试它来弄清发生的事情,但截至目前这个问题似乎已经解决了,这太棒了! :-)。如果它可以帮助任何人,我使用以下头:'header('Content-Type:application/javascript; charset = utf-8');' – ghego1