【问题标题】:Why my JSON string is null?为什么我的 JSON 字符串为空?
【发布时间】:2014-02-08 11:09:37
【问题描述】:

我在 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"}] 

请帮帮我。请给我一些解决方案

提前致谢!!!

【问题讨论】:

    标签: php null json


    【解决方案1】:
    【解决方案2】:

    我使用有限的编码重新创建了您描述的行为。

    检查 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...

    任何字符都可以转义。如果角色在 Basic
    多语言平面(U+0000 到 U+FFFF),那么它可能是
    表示为六个字符的序列:反向固线,后跟
    由小写字母 u 后跟四个十六进制数字
    对字符的代码点进行编码。虽然是十六进制字母 A
    F 可以是大写或小写。因此,例如,包含
    的字符串 只有一个反斜线字符可以表示为
    “\u005C”。

    【讨论】:

    • 是的,我更改为 Unicode,但我通过以下方式获得了输出。 [{"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"}]
    • 没关系,因为您的 json 收件人会将其转换回正确输出(通常在浏览器中)。
    猜你喜欢
    • 2014-11-23
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-12
    相关资源
    最近更新 更多