为什么我的字符串在JSON中转换为UNICODE?
以{"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)
你必须传递常量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”}