在做微信企业号消息推送时,遇到一个问题,就是讲中文消息以json格式推给微信服务器时,收到的消息是乱码。经过查找资料排查是这样的。
PHP5.2或以上的版本把json_encode作为内置函数来用,但是我们必须注意到json_encode只支持UTF8编码的字符,
否则,中文乱码或者空值就出现了。
解决方法:
1、把所有的中文转为UTF-8编码(本身是utf8的话无须转)
$data="JSON中文";
$newData=iconv("GB2312","UTF-8//IGNORE",$data);
2、把中文的urlencode一下
$testJSON=array('name'=>'中文字符串','value'=>'test');
//echo json_encode($testJSON);
foreach ( $testJSON as $key => $value ) {
$testJSON[$key] = urlencode ( $value );
}
3、然后json_encode之后再urldecode一下转回来
$test_json_str = json_encode ($testJSON )
echo urldecode ($test_json_str);
查看输出结果为:
{“name”:”中文字符串”,”value”:”test”}
这样可以很好的解决中文JSON乱码问题。
有话要说