PHP json_encode()使数据为null

时间:2011-07-14 12:08:55

标签: php json jquery

我这里有这个代码:

case 'resource_list':
        if(file_exists('content.php')){
            include('../ajax/content.php');
        } else {
            die('does not exist');
        }
        $html = render_content_page($array[1],$array[2]);
        $slate = 'info_slate';
        $reply_array = array(
            'html' => $html,
            'slate' => $slate
        );
        echo json_encode($reply_array);
    break;

我调试了每个级别,直到调用json_encode()为止。但是我在ajax中收到的数据对于html密钥来说是nul。这段代码本质上是另一个案例的复制和粘贴,只是调用render_content_page()以外的函数,但是完全正常。

$ reply_array var_exports to:

array (
  'html' => '<ol>
    <li unit="quiz" identifier=""><img src="img/header/notifications.png"/>Fran�ois Vase Volute Krater</li>
    </ol>',
  'slate' => 'info_slate',
)

3 个答案:

答案 0 :(得分:16)

我最初的想法是Fran�ois Vase Volute Krater中的特殊字符,因为json_encode仅适用于UTF-8编码数据。

在JSON编码之前尝试使用UTF-8编码,如下所示:

json_encode(utf8_encode("Fran�ois Vase Volute Krater"));

答案 1 :(得分:5)

问题可能与编码有关吗? 作为手动状态,json_encode()仅适用于utf8编码数据:

  

此功能仅适用于UTF-8编码数据。

http://php.net/json_encode

答案 2 :(得分:1)

作为documentedjson_encode期望其输入文本为UTF-8。最有可能的是,您的输入(ç)不是UTF-8。

使用utf8_encode(如果您当前正在使用ISO-8859-1)或mb_convert_encoding(否则)将输入字符串转换为UTF-8。