我在PHP中编写了一个代码,以查看JSON字符串输出。但我得到零价值。
<?php
$l=array();
$l[] = array('a'=>'@cÐaÐjÔÐ J kf _ÞÒi^ ','b'=>']éÞ[ѯРQtÍ]hà_ , `ËSÐ J heZ Òhi');
echo $j = json_encode($l);
?>
输出 - :
[{"a":null,"b":null}]
为什么JSON输出为空。我期待必须存在字符编码问题。
我希望以下列格式输出。
[{"a":"@cÐaÐjÔÐ J kf _ÞÒi^","b":"]éÞ[ѯРQtÍ]hà_ , `ËSÐ J heZ Òhi"}]
请帮帮我。请建议我一些解决方案
提前致谢!!!
答案 0 :(得分:1)
在推送到数组之前可能需要使用utf8_encode()字符串然后json_encode,因为json_encode()仅适用于utf8编码数据
$l=array();
$l[] = array('a'=>utf8_encode('@cÐaÐjÔÐ J kf _ÞÒi^ '),
'b'=>utf8_encode(']éÞ[ѯРQtÍ]hà_ , `ËSÐ J heZ Òhi'));
echo json_encode($l);
好的看起来你的问题并不那么简单,你需要使用
htmlentities( (string) $value, ENT_QUOTES, 'utf-8', FALSE);
处理这种情况
$array = array("a"=>htmlentities( (string) "@cÐaÐjÔÐ J kf _ÞÒi^ ", ENT_QUOTES, 'utf-8', FALSE),
"b"=>htmlentities( (string) "]éÞ[ѯРQtÍ]hà_ , `ËSÐ J heZ Òhi", ENT_QUOTES, 'utf-8', FALSE)
);
$json = json_encode($array);
echo ($json);
点击http://phpfiddle.org/main/code/mh8-7ua
您需要在数组元素中添加上述内容。
答案 1 :(得分:0)
我使用有限的编码重新创建了您描述的行为。
检查php脚本的文件编码。确保将其设置为unicode或utf8(如果可用)。
否则你必须先将你的字符串转换为utf8,就像Abhik在答案中所说的那样。
您的输出将如下所示
[{"a":"@c\u00d0a\u00d0j\u00d4\u00d0 J kf _\u00de\u00d2i^ ",
"b":"]\u00e9\u00de[\u00d1\u00af\u00d0 Qt\u00cd]h\u00e0_ , `\u00cbS\u00d0 J heZ \u00d2hi"}]
That is working as intended, since ...
任何角色都可能被转义。如果角色在基本
中 多语言平面(U + 0000到U + FFFF),然后它可能是
表示为六个字符的序列:反向固相,然后是
用小写字母u,后跟四个十六进制数字 编码角色的代码点。十六进制字母A到
F可以是大写或小写。因此,例如,包含
的字符串 只有一个反向固相字符可以表示为
“\ u005C”。