2013-03-01 21 views
1

我有一個問題,json可以編碼一個數組但是然後它不能正確解碼它由於特殊字符。JSON_encode沒有照顧特殊的人物?

我發現計算器此功能,試圖幫助:

function escapeJsonString($value) 
{ # list from www.json.org: (\b backspace, \f formfeed) 
       $escapers = array("\\", "/", "\"", "\n", "\r", "\t", "\x08", "\x0c"); 
       $replacements = array("\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\f", "\\b"); 
       $result = str_replace($escapers, $replacements, $value); 
       return $result; 
    } 

但這只是每次我得到一個新的特殊字符時我必須手動處理它,並把它添加到人物的名單,該字符及其替換列表。

我該如何正確處理這個問題?

感謝

+3

如果字符串是utf-8 json_encode沒有正確處理特殊字符,json_decode也是如此,通常沒有額外的替換要求,如果你正在使用有效的json,請發佈你的json代碼! – x4rf41 2013-03-01 11:14:22

+0

您是否使用過urlencode()http://php.net/manual/en/function.urlencode.php? – 2013-03-01 11:14:24

回答

0

嘗試清潔您的JSON

$cleanJsonData = preg_replace("/[[:cntrl:]]/", "", $jsonData); 
$myData = json_decode($cleanJsonData, TRUE); 
0

json_decode節選輸入字符串爲UTF-8編碼。

<?php 
$json = json_decode(utf8_encode($str)); 

這應該起作用。

+0

爲防萬一以後人們在谷歌上找到這個,這個工作。 – user2123244 2013-03-10 09:02:50