GVKun编程网logo

json_encode返回NULL?(json_encode返回值)

17

本文将分享json_encode返回NULL?的详细内容,并且还将对json_encode返回值进行详尽解释,此外,我们还将为大家带来关于json_decode返回null空问题解决方法、json_e

本文将分享json_encode返回NULL?的详细内容,并且还将对json_encode返回值进行详尽解释,此外,我们还将为大家带来关于json_decode返回null空问题解决方法、json_encode PHP学习散记_编码json_encode 中文不显示、json_encode 中文变成null、json_encode返回NULL,json_last_error_msg给出“控制字符错误,可能编码错误”的相关知识,希望对你有所帮助。

本文目录一览:

json_encode返回NULL?(json_encode返回值)

json_encode返回NULL?(json_encode返回值)

由于某种原因,“描述”项将返回NULL以下代码:

<?phpinclude(''db.php'');$result = mysql_query(''SELECT * FROM `staff` ORDER BY `id` DESC LIMIT 2'') or die(mysql_error());$rows = array();while($row = mysql_fetch_assoc($result)){    $rows[] = $row;}echo json_encode($rows);?>

这是我的数据库的架构:

CREATE TABLE `staff` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `name` longtext COLLATE utf8_unicode_ci,  `description` longtext COLLATE utf8_unicode_ci,  `icon` longtext COLLATE utf8_unicode_ci,  `date` longtext COLLATE utf8_unicode_ci,  `company` longtext COLLATE utf8_unicode_ci,  `companyurl` longtext COLLATE utf8_unicode_ci,  `appurl` longtext COLLATE utf8_unicode_ci,  PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

这是页面上呼应的内容:

[{"id":"4","name":"Noter 2","description":null,"icon":"http:\/\/images.apple.com\/webapps\/productivity\/images\/noter2_20091223182720-thumb.jpg","date":"1262032317","company":"dBelement, LLC","companyurl":"http:\/\/dbelement.com\/","appurl":"http:\/\/noter2.dbelement.com"},{"id":"3","name":"Noter 2","description":null,"icon":"http:\/\/images.apple.com\/webapps\/productivity\/images\/noter2_20091223182720-thumb.jpg","date":"1262032317","company":"dBelement, LLC","companyurl":"http:\/\/dbelement.com\/","appurl":"http:\/\/noter2.dbelement.com"}]

有任何想法吗?

答案1

小编典典

我敢打赌,您正在以非utf8编码检索数据:请尝试mysql_query(''SET CHARACTER SETutf8'')SELECT查询之前输入。

json_decode返回null空问题解决方法

json_decode返回null空问题解决方法

json_decode对于英文估计返回都是正常的但有些朋友碰到中文时会就发现返回为null或空了,下面我来给各位朋友简单介绍此问题解决方法.

今天在做一个东西的时候需要抓取淘宝的一些数据,找到了请求的url,返回了一个callback,看了下callback中的参数是一个对象,通过正则匹配去到了数组,但是在使用json_decode()转换的时候返回的是NULL,老郁闷了,前一段时间要做一个东西也是因为这个原因,没有成功的把json对象转换成php的数组,放弃了,今天又遇到了,终于找到了解决的办法.

原因在于:抓取的数数据是是GBK格式,通过抓包看到,返回的header头中,代码如下:

Content-Type:text/html;charset=GBK
登录后复制

这个时候用icvo转码下,然后在json_decode()就可以正常转换了,代码如下:

iconv(&#39;gbk&#39;,&#39;utf-8&#39;,$data[1][0]);
登录后复制

这里还需要主要的是你php代码文件的格式,建议是utf-8无bom头.


本文地址:

转载随意,但请附上文章地址:-)

json_encode PHP学习散记_编码json_encode 中文不显示

json_encode PHP学习散记_编码json_encode 中文不显示

在网上找到一种解决方法:

复制代码 代码如下:


/* 处理json_encode中文乱码 */
$data = array (''game'' => ''冰火国度'', ''name'' => ''刺之灵'', ''country'' => ''冰霜国'', ''level'' => 45 );
echo json_encode ( $data );
echo "
";
$newData = array ();
foreach ( $data as $key => $value ) {
$newData [$key] = urlencode ( $value );
}
echo urldecode ( json_encode ( $newData ) );
?>


后来请教了别人,还可以用base64编码,不过base64编码不可以放在URL中,百度是这样解释的:
标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。
不过我的数据是要通过POST发送的,并不在HTTP 的head中,而在message-body里,所以不受影响。
json_encode 只能接受utf-8格式的数据
urlencode base64_encode 只能接受字符串类型的参数,所以无法对整个数组进行编码。

以上就介绍了json_encode PHP学习散记_编码json_encode 中文不显示,包括了json_encode方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

json_encode 中文变成null

json_encode 中文变成null

今天在使用php时掉进了一个坑里,折腾了好久。 在使用json_encode时,如果数组中存在中文,该中文输出为null。   示例代码:

<?<span php
  </span><span $brand</span> = <span array</span>(''id''=>''123456'',''name''=>''联想''<span );
  </span><span var_dump</span>(json_encode(<span $brand</span><span ));
</span>?>
登录后复制

输出结果:

<span string</span>(27) "{"id":"123456","name":null}"
登录后复制
“联想”变成null了。 使用下面这个函数解决了此问题。
<?<span php
  </span><span function</span> gbk2utf8(<span $data</span><span ){
    </span><span if</span>(<span is_array</span>(<span $data</span><span )){
      </span><span return</span> <span array_map</span>(''gbk2utf8'', <span $data</span><span );
    }
    </span><span return</span> <span iconv</span>(''gbk'',''utf-8'',<span $data</span><span );
  }
</span>?>
登录后复制
<?<span php
  </span><span $brand</span> = <span array</span>(''id''=>''123456'',''name''=>''联想''<span );
  </span><span var_dump</span>(json_encode(gbk2utf8(<span $brand</span><span )));
</span>?>
登录后复制

在json_encode之前做一下gbk2utf8转码,此时输出正确结果。

<span string</span>(37) "{"id":"123456","name":"\u8054\u60f3"}"
登录后复制

\u8054\u60f3 为“联想”的unicode码,浏览器会自动转换成文字。

json_encode返回NULL,json_last_error_msg给出“控制字符错误,可能编码错误”

json_encode返回NULL,json_last_error_msg给出“控制字符错误,可能编码错误”

读入我的编辑器后,文件看起来很好。

$file = file_get_contents(''path/to/file.json'');$json =  json_decode($file, true);var_dump($json); // nullecho json_last_error_msg(); //Control character error, possibly incorrectly encoded

关于此错误消息的含义,目前没有多少。

答案1

小编典典

您可以删除控制字符,PCRE支持字符类的POSIX表示法[:cntrl:]

$json = preg_replace(''/[[:cntrl:]]/'', '''', $json);$json = json_decode($json, true);var_dump($json);echo json_last_error_msg();

关于json_encode返回NULL?json_encode返回值的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于json_decode返回null空问题解决方法、json_encode PHP学习散记_编码json_encode 中文不显示、json_encode 中文变成null、json_encode返回NULL,json_last_error_msg给出“控制字符错误,可能编码错误”的相关知识,请在本站寻找。

本文标签: