JSON - 避免UNICODE转换

时间:2015-11-03 12:19:23

标签: php json unicode

为什么我的字符串在JSON中转换为UNICODE?

  

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

{"MyComment":"\u0113 "}

保存在JSON中

我希望保存为{"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);

3 个答案:

答案 0 :(得分:0)

你必须传递常量JSON_UNESCAPED_UNICODE以避免它。

$ json = json_encode($ data,JSON_UNESCAPED_UNICODE);

答案 1 :(得分:0)

在php 5.4+中,php的json_encode确实有普通输出的JSON_UNESCAPED_UNICODE选项。在较旧的php版本中,您可以推出自己的不编码非ASCII字符的JSON编码器。

答案 2 :(得分:0)

如果您只想拥有 urlencoded 值,则必须将其替换为:

$MyComment = $_GET["MyComment"];

with this(由于下面的评论而更新):

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

对于 Swift 问题,您应该使用:

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

空格将被编码为%20,因此您可以在Swift端对其进行解码。

控制台输出:

  

对象{MyComment:“%C4%93”}