2014-01-29 56 views
0

我對包含unicode字符的JSON字符串使用json_decode,但它沒有返回所需的輸出。我不確定它是否是包含錯誤的字符串,或者我做錯了什麼。json_decode與unicode字符產生不正確的數組

$test = '[{"name":"mobi7","content":"jotform test"},{"name":"city7","content":"\\u0627\\u0644\\u0625\\u0633\\u0645\\u0627\\u0639\\u064a\\u0644\\u064a\\u0629"},{"name":"sex44","content":"\\u0630\\u0643\\u0631"},{"name":"age7","content":"26"},{"name":"edu7","content":"\\u0635\\u064a\\u062f\\u0644\\u0629"}]'; 

print_r(json_decode($test, true)); 

此輸出:

Array ([0] => Array ([name] => mobi7 [content] => jotform test) [1] => Array ([name] => city7 [content] => u0627لإسماعيلية) [2] => Array ([name] => sex44 [content] => ذكر) [3] => Array ([name] => age7 [content] => 26) [4] => Array ([name] => edu7 [content] => صيدلة)) 

正如你可以看到這會產生一個格式不正確的數組,但我不知道爲什麼。任何幫助表示讚賞。

謝謝

回答

2

你確定你沒有編碼你的json兩次嗎?我認爲那些雙斜線是給你的麻煩:

\\u0635\\u064a\\u062f\\u0644\\u0629 

我想應該是這樣的:

$test = '[{"name":"mobi7","content":"jotform test"},{"name":"city7","content":"\u0627\u0644\u0625\u0633\u0645\u0627\u0639\u064a\u0644\u064a\u0629"},{"name":"sex44","content":"\u0630\u0643\u0631"},{"name":"age7","content":"26"},{"name":"edu7","content":"\u0635\u064a\u062f\u0644\u0629"}]'; 

編輯:

以上的JSON解析後的結果使我有以下幾點:

[ 
{ 
    "name":"mobi7", 
    "content":"jotform test" 
}, 
{ 
    "name":"city7", 
    "content":"الإسماعيلية" 
}, 
{ 
    "name":"sex44", 
    "content":"ذكر" 
}, 
{ 
    "name":"age7", 
    "content":"26" 
}, 
{ 
    "name":"edu7", 
    "content":"صيدلة" 
} 
] 
+0

我不認爲這是這裏的問題。它會產生相同的結果(無雙斜槓) – user2825384

+0

確定嗎?我剛剛測試過它:http://json.parser.online.fr/在解析時我得到了一些阿拉伯字符 –

+0

鏈接到的網站解析器也爲雙斜線生成正確的結果,但在php返回中運行它格式錯誤的數組 – user2825384

0

您的代碼適用於我在u0627之前添加\\

+0

哦對不起。我刪除了測試並忘記添加回來。它仍然不適用於我,雖然即使添加了斜槓 – user2825384

+0

,您能向我展示它爲您打印的內容嗎? – user2825384