php 与 JavaScript 的json交互,中文乱码问题

php 与javascript的json交互很简单,主要是要处理中文乱码问题

1、首先尽量使用utf-8编码,如果不是utf-8编码,在使用json_encode时中文会变为null,因为只对utf-8编码有效

当然如果不是utf-8编码可以在json_encode之前进行utf-8编码转换

 

2、如果使用utf-8编码

<?php

	$list = array('one' => '第一条数据' , 'two' => '第二条数据' );

	$json = json_encode($list);

	echo $json;

 	// 输出内容 : {"one":"\u7b2c\u4e00\u6761\u6570\u636e","two":"\u7b2c\u4e8c\u6761\u6570\u636e"}

?>

对与utf-8编码的中文,在json_encode之前应该对数据用urlencode转换

<?php

	$list = array('one' => '第一条数据' , 'two' => '第二条数据' );

	foreach ($list as $key => $value) {
		$list[$key] = urlencode($value);	//首先
	}

	$json = json_encode($list);

	echo $json;
	// 输出 {"one":"%E7%AC%AC%E4%B8%80%E6%9D%A1%E6%95%B0%E6%8D%AE","two":"%E7%AC%AC%E4%BA%8C%E6%9D%A1%E6%95%B0%E6%8D%AE"}

	echo urldecode($json);
	// 输出 {"one":"第一条数据","two":"第二条数据"}

?>

注意最后要用urldecode转换回来

发表评论