当php中的数组通过json_encode把数组转换为json时,发现转化的值为null,通过php手册上的解释是该函数只能接受 UTF-8 编码的数据(译注:指字符/字符串类型的数据),如果当前页面的编码没有指定utf8或者网页编码不是utf8,肯定是没任何输出的,返回null值的。
1.当在php自身页面输出数组时需要在输出前加上一句header(Content-type:text/html;charset=utf8);
2.当通过获取其他页面数据返回成数组再转换成json时,还要注意对获取页面的数据进行转码,避免你声明的编码和要输出的数据的编码类型不相同,所以,可以通过下面的函数进行字符串转码
function encodeConvert($str,$fromCode,$toCode){
if(strtoupper($toCode) == strtoupper($fromCode)) return $str;
if(is_string($str)){
if(function_exists('mb_convert_encoding')){
return mb_convert_encoding($str,$toCode,$fromCode);
}
else{
return iconv($fromCode,$toCode,$str);
}
}
elseif(is_array($str)){
foreach($str as $k=>$v){
$str[$k] = encodeConvert($v,$fromCode,$toCode);
}
return $str;
}