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

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);
}

你可能感兴趣的:(PHP,函数,编码,utf-8)