當php中的數(shù)組通過json_encode把數(shù)組轉(zhuǎn)換為json時,發(fā)現(xiàn)轉(zhuǎn)化的值為null,通過php手冊上的解釋是該函數(shù)只能接受 UTF-8 編碼的數(shù)據(jù)(譯注:指字符/字符串類型的數(shù)據(jù)),如果當前頁面的編碼沒有指定utf8或者網(wǎng)頁編碼不是utf8,肯定是沒任何輸出的,返回null值的。
1.當在php自身頁面輸出數(shù)組時需要在輸出前加上一句header(Content-type:text/html;charset=utf8);
2.當通過獲取其他頁面數(shù)據(jù)返回成數(shù)組再轉(zhuǎn)換成json時,還要注意對獲取頁面的數(shù)據(jù)進行轉(zhuǎn)碼,避免你聲明的編碼和要輸出的數(shù)據(jù)的編碼類型不相同,所以,可以通過下面的函數(shù)進行字符串轉(zhuǎn)碼
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;
}