在ajax时我们经常会用到json格式的数据,而在使用json_encode对数组进行转换时,如果数组中存在中文,而中文又是GBK编码的,该中文输出为null。
示例代码:
$brand = array('id'=>'123456','name'=>'追太阳'); var_dump(json_encode($brand));
输出结果:
string(27) "{"id":"123456","name":null}" 我们需要使用编码转换函数转换成utf8格式,你可以自己写一个转换函数,也可以使用逐日者提供的一个转换函数:/** * 对数据进行编码转换 * @param array/string $data 数组 * @param string $input 需要转换的编码 * @param string $output 转换后的编码 */ function array_iconv($data, $input = 'gbk', $output = 'utf-8') { if (!is_array($data)) { return iconv($input, $output, $data); } else { foreach ($data as $key=>$val) { if(is_array($val)) { $data[$key] = array_iconv($val, $input, $output); } else { $data[$key] = iconv($input, $output, $val); } } return $data; } } $brand = array('id'=>'123456','name'=>'追太阳'); var_dump(array_iconv(gbk2utf8($brand)));
在json_encode之前做一下array_iconv转码,此时输出正确结果。
string(37) "{"id":"123456","name":"/u8054/u60f3/u62343"}"/u8054/u60f3/u6234 为“追太阳”的unicode码,然后在浏览器会自动转换成文字。
本文属追太阳原创文章,转载请声明出处:追太阳