2015-11-03 73 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编码器。