2011-11-21 89 views
0

我有以下的PHPPHP json_encode問題UTF-8

$array = array(
    array('name'=>'abc', 'text'=>'اسلسصثصض صثصهخه عه☆anton & budi☆'), 
    array('name'=>'xyz', 'text'=>'nice'), 
); 

陣列當我使用json_encode,其結果是不同的:

[ 
    { 
    "name": "abc", 
    "text": "\u0627\u0633\u0644\u0633\u0635\u062b\u0635\u0636 \u0635\u062b\u0635\u0647\u062e\u0647 \u0639\u0647\u2606anton '<&>' budi\u2606" 
    }, 
    { 
    "name": "xyz", 
    "text": "nice" 
    } 
] 

爲什麼結果不是這樣?

[ 
    { 
     "name": "abc", 
     "text": "اسلسصثصض صثصهخه عه☆anton &amp; budi☆" 
    }, 
    { 
     "name": "xyz", 
     "text": "nice" 
    } 
] 

感謝

回答

0

試試這個:

 
//for encode 
json_encode(array_map('base64_encode', $array)); 

//and for decode 
array_map('base64_decode', json_decode($array)); 

希望它可以幫助

1

因爲PHP不承擔/允許非ASCII字符集編碼時。解碼時兩個結果都是等效的。

1

因爲它被編碼爲JSON。通過你的第一個輸出,你絕對100%確定瀏覽器將會收到你想要的結果。第二,你不能確定。