2015-11-03 96 views
0

爲什麼我的字符串在JSON中轉換爲UNICODE?JSON - 避免UNICODE轉換

http://example.com/test/test.php?MyComment=%C4%93

保存在JSON作爲{"MyComment":"\u0113 "}

我想保存爲{"MyComment":"%C4%93"}

PHP:

$MyComment = $_GET["MyComment"]; 

print_r($MyComment); //%C4%93 

$results = array (array(

    "MyComment" => $MyComment, 

    )); 

$inp = file_get_contents('Test.json'); 
$arr = json_decode($inp); 
$results = array_merge($results, $arr); 

$fp_login = fopen('Test.json', w); 
fwrite($fp_login, json_encode($results)); 
fclose($fp_login); 
+0

什麼是你的代碼? –

+0

哪個字符集被使用? – mischaZeng

+0

對不起,添加我的代碼] – SNos

回答

0

如果你只是想有url編碼價值,必須更換此:

$MyComment = $_GET["MyComment"]; 

本(更新由於下面的評論):

$MyComment = urlencode($_GET["MyComment"]); 

爲了您Swift您應該使用的問題:

$MyComment = rawurlencode($_GET["MyComment"]); 

空格將被編碼爲%20,因此您可以在Swift端進行解碼。

控制檯輸出:

對象{MyComment: 「%C4%93」}

+0

非常感謝你 – SNos

+0

這樣做的空間轉換爲+ – SNos

+0

不用客氣;) – swidmann

0

你要通過不斷的JSON_UNESCAPED_UNICODEŧ o避免它。

$ json = json_encode($ data,JSON_UNESCAPED_UNICODE);

+0

現在謝謝你,我得到了{「MyComment」:「ē」}這是一個很好的例子,但是我怎麼才能真正得到百分比編碼呢? – SNos

+0

您應該迭代到每個字段並通過urlencode傳遞它。或者你可以urlencode整個JSON,但不是一個好習慣。 –

0

在php 5.4+中,php的json_encode確實有普通輸出的JSON_UNESCAPED_UNICODE選項。在較早的php版本中,您可以推出自己的不編碼非ASCII字符的JSON編碼器。