2015-11-20 59 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