ajax时json_encode 中文变成null解决办法
2014-09-09 13:50:27;  来源:;  作者:;  评论:0 点击:

在ajax时我们经常会用到json格式的数据,而在使用json_encode对数组进行转换时,如果数组中存在中文,而中文又是GBK编码的,该中文输出为nu
在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码,然后在浏览器会自动转换成文字。

 

 

本文属追太阳原创文章,转载请声明出处:http://www.zhuitaiyang.com/html/php/702.html_追太阳

相关热词搜索:json json_encode 中文

上一篇:21个实用便利的PHP函数代码
下一篇:新搭建的php环境中常见的一些小问题与解决办法总结

收藏
回到顶部