收藏此站 联系我们 宿迁腾云网络公司
全部 网站建设 SEO优化 技术日志
当前位置:网站首页 > 技术日志

PHPjson_encode中文乱码解决方法(phpjson_encode;gt;5.2)

作者: 腾云网络 . 阅读量: . 发表时间:2021-01-31

使用php中内置的json_encode()函数(可以使用php>5.2)。php中的数据可以与其他语言很好地传输并使用。

此功能的功能是将值转换为json数据存储格式。

'希亚',
   'Age'=>
  );
$jsonencode = json_encode($arr);
echo $jsonencode;
?>

程序运行结果如下:

{“名称”:null,“年龄”:}

json_encode函数中的中文被编码为null。谷歌做了一点。这很简单。为了与前端紧密集成,Json仅支持utf编码。我认为前端Javascript也是utf-的原因。

iconv('gb','utf-','这里是中文标题'),
  'body'=>'abcd...'
 );
echo json_encode($array);
?>

该程序的运行结果为:

{“ title”:“ \ u8fd9 \ u91cc \ u662f \ u4e2d \ u6587 \ u6807 \ u9898”,“ body”:“ abcd ...”}

出现json_encode或\ u2353等后,数组中的所有中文都消失了。

解决方案是使用urlencode()函数来处理以下内容。在json_encode之前,使用urlencode()处理数组的所有内容,然后使用json_encode()将其转换为json字符串,最后使用urldecode()转换回编码后的中文。

 ) {
  die('possible deep recursion attack');
 }
 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]);
   }
  }
 }
 $recursive_counter--;
}
/**************************************************************
 *
 * 将数组转换为JSON字符串(兼容中文)
 * @param array $array  要转换的数组
 * @return string  转换得到的json字符串
 * @access public
 *
 *************************************************************/
function JSON($array) {
 arrayRecursive($array, 'urlencode', true);
 $json = json_encode($array);
 return urldecode($json);
}
$array = array
  (
   'Name'=>'希亚',
   'Age'=>
  );
echo JSON($array);
?>

这一次成功了,结果如下:

{“名称”:“夏”,“年龄”:“ 20”}

让我们介绍PHP json_encode中文乱码的解决方案

我相信许多人在使用Ajax与后台php页面进行交互时遇到了中文乱码的问题。作为一种轻量级的数据交换格式,JSON非常流行。但是,将PHP用作背景交互会容易出现中文乱码。 JSON与js相同。客户端上的字符以UTF8的形式处理。也就是说,当使用JSON作为提交和接收的数据格式时,字符将以UTF8编码进行处理。当我们的页面编码和数据库编码都没有使用UTF8时,极容易出现中文乱码的问题。自然的解决方案是在使用js或PHP处理JSON数据时使用UTF8。

PHP5.2或更高版本使用json_encode作为内置函数,这为网站创建者带来了极大的便利php json encode 编码,但是我们必须注意json_encode仅支持UTF8编码的字符,否则php json encode 编码,中文乱码或空值会出现。

解决方案分为以下两个步骤。

Step1

使用JSON处理时,请确保字符以UTF8编码。具体来说,我们可以将数据库编码和页面编码更改为UTF8。当然,如果您更喜欢使用gbk编码,则可以在JSON处理之前将字符转换为UTF8。 PHP中有以下方法:

Step2

后端PHP页面(页面编码为UTF-8或字符已转换为UTF-8)。请使用json_encode将PHP中的数组数组转换为JSON字符串。例如:

'中文字符串','value'=>'test');
 echo json_encode($testJSON);
?>

查看输出结果为:

{“名称”:“ \ u4e2d \ u6587 \ u5b57 \ u7b26 \ u4e32”,“值”:“测试”}

可以看出,即使使用UTF8编码的字符,使用json_encode时也会出现中文乱码。解决方案是先使用函数urlencode()处理字符,然后再使用json_encode,然后使用json_encode,并在输出结果时使用函数urldecode()返回。详细信息如下:

'中文字符串','value'=>'test');
 //echo json_encode($testJSON);
 foreach ( $testJSON as $key => $value ) {
  $testJSON[$key] = urlencode ( $value );
 }
 echo urldecode ( json_encode ( $testJSON ) );
?>

查看输出结果为:

{“名称”:“中文字符串”,“值”:“测试”}

到目前为止,已经成功输出了汉字。随时使用json_encode。这样,在前面的javascript中,Ajax收到eval后,PHP后台中输出的JSON字符串将不会出现中文乱码,因为js还在处理UTF8形式的JSON格式数据,类似于PHP,因此PHP收到页面。JSON字符串将不会有问题。

有关PHP json_encode()函数和有关中文乱码问题的相关文章的详细说明,请关注PHP中文网站!

相关标签:php json编码函数乱码本文最初发表于php中文网站,请注明转载来源,谢谢!!


标签:php utf8 字符编码
转载请注明来源:https://www.tyweb.net/jsrz/363.html
现在咨询免费送诊断方案,每天限3名
马上填写资料获取方案
腾云网络产品
网站建设 微信小程序 微商城 APP开发 SEO优化
腾云网络服务
7x24小时售后支持 市内上门服务 免费后台培训 定期回访
关于腾云网络
关于我们
网站建设案例 小程序案例 APP开发案例
联系腾云网络
联系腾云网络
紧急问题处理电话
131-6035-5545 131-6035-5545
131-6035-5545
扫一扫关注腾云网络公众号