您的位置:首页 > 编程语言 > PHP开发

php的tips(json发送中文是出现null的问题)

2016-05-04 00:49 441 查看

php使用json传递数据的时候出现null的情况

json_encode()函数默认使用的是utf8编码,出现中文时,如果不是utf8编码的话,则会出现null的情况,则需要使用

方法1:

$array = array('title'=>iconv('gb2312','utf-8','这里是中文标题'),'body'=>'abcd...');
echo json_encode($array);
//编码以后的内容就成了这样:
//{"title":"u8fd9u91ccu662fu4e2du6587u6807u9898","body":"abcd..."}


iconv函数不是php的默认函数,也是默认安装的模块。需要安装才能用的,你可以修改php.ini文件,将extension=php_iconv.dll前的”;”去掉,同时你要copy你的原php安装文件下的iconv.dll到你的winnt/system32下,其作用是转换编码

$str = "这是荆天佑的博客,啦啦啦";
iconv("gbk","utf8",$str)//将字符串string  编码由utf8转变成gbk;


方法2

/*
字符串GBK转码为UTF-8,数字转换为数字。
*/
function ct2($s){
if(is_numeric($s)) {//is_numeric — 检测变量是否为数字或数字字符串
return intval($s);
} else {
return iconv("GBK","UTF-8",$s);
}
}
/*
批量处理gbk->utf-8
*/
function icon_to_utf8($s) {
if(is_array($s)) {
foreach($s as $key => $val) {
$s[$key] = icon_to_utf8($val);//对于数组进行递归调用
}
} else {
$s = ct2($s);
}
return $s;
}
echo json_encode(icon_to_utf8("厦门"));


方法3:

/**************************************************************
*
*    使用特定function对数组中所有元素做处理
*    @param    string    &$array        要处理的字符串
*    @param    string    $function    要执行的函数
*    @return boolean    $apply_to_keys_also        是否也应用到key上
*    @access public
*
*************************************************************///该函数功能为把数组的各个元素进行处理
function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
{
foreach ($array as $key => $value) {
if (is_array($value)) {
arrayRecursive($array[$key], $function, $apply_to_keys_also);
} else {
$array[$key] = $function($value);
}
if ($apply_to_keys_also && is_string($key)) {
$new_key = $function($key);
if ($new_key != $key) {
$array[$new_key] = $array[$key];
unset($array[$key]);
}
}
}
}
/**************************************************************
*
*    将数组转换为JSON字符串(兼容中文)
*    @param    array    $array        要转换的数组
*    @return string        转换得到的json字符串
*    @access public
*
*************************************************************/
function JSON($array) {
arrayRecursive($array, 'urlencode', true);
$json = json_encode($array);
return urldecode($json);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: