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中文网站,请注明转载来源,谢谢!!