很多站长朋友们都不太清楚phpjson转换中文,今天小编就来给大家整理phpjson转换中文,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 php怎么将json中的unicode编码转为汉字 2、 php json_encode使用中文不转码 3、 如何正确运用PHP json_encode函数进行中文转换? 4、 php如何输出中文json格式字符串 5、 php 输出json及显示json中的中文汉字详解及实例 6、 关于PHP将JSON输出为中文 php怎么将json中的unicode编码转为汉字$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';//将这里替换为json中的unicode编码
var_dump(json_decode($json));//关键是json_decode函数可以解码json
php json_encode使用中文不转码PHP转JSON,中文会被转码成unicode,使用常量 JSON_UNESCAPED_UNICODE 可以使中文原样输入。
不使用 JSON_UNESCAPED_UNICODE
使用 JSON_UNESCAPED_UNICODE
Json在 5.4 还加入了: JSON_BIGINT_AS_STRING , JSON_PRETTY_PRINT , JSON_UNESCAPED_SLASHES 等选项, 如果有兴趣, 大家可以参看: json_encode
其中有2个比较常用到的参数
JSON_UNESCAPED_UNICODE (中文不转为unicode ,对应的数字 256)
JSON_UNESCAPED_SLASHES (不转义反斜杠,对应的数字 64)
通常json_encode只能传入一个常量,如果同时使用2个常量怎么办?
JSON_UNESCAPED_UNICODE + JSON_UNESCAPED_SLASHES = 320
使用方法:json_encode($arr,320);即可完成同时使用2个常量。
PHP5.4才支持 JSON_UNESCAPED_UNICODE 这个参数,此参数是让中文字符在json_encode的时候不用转义,减少数据传输量。
如何正确运用PHP json_encode函数进行中文转换?在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。这个函数的功能是将数值转换成json数据存储格式,但是转换后的中文会变成Unicode编码。\x0d\x0a[php] view plaincopyprint?\x0d\x0a
php如何输出中文json格式字符串php如何输出中文json格式字符串
如何对json格式的字符串进行转换,php提供了两个函数:
json_encode 对变量进行 JSON 编码
json_decode 对 JSON 格式的字符串进行编码
下面看个实例:
$arr = ['a', 'b', 'c'];echo json_encode($arr);
输出为:
["a","b","c"]
但是,当我们在数组中放入中文的时候,就会出现问题:
$arr = [ '世界', '你好',
];echo json_encode($arr);
输出的结果为:
["\u4e16\u754c","\u4f60\u597d"]
这个结果显然不是我们想要的,但是为什么出现这个呢?
因为当我们的值中包含中文时,php对他进行json编码时底层会对中文进行unicode编码,导致结果不可读,那该怎么解决呢?
方法一
可以利用 urlencode 和 urldecode 方法绕过这个转码为 unicode 的过程,先将中文字段进行urlencode,然后json_encode,最后再用urldecode处理结果,便可以正常显示中文。具体代码如下:
$arr = [ '世界', '你好',
];echo urldecode(json_encode(array_map('urlencode', $arr)));
输出结果为:
["世界","你好"]
方法二
自PHP5.4版本,官方就已经给Json新增了一个选项: JSON_UNESCAPED_UNICODE。加上这个选项后,就不会自动把中文编码了。具体代码如下:
$arr = [ '世界', '你好',
];echo json_encode($arr, JSON_UNESCAPED_UNICODE);
["世界","你好"]
看吧,这才是我们想要的结果 :)
php 输出json及显示json中的中文汉字详解及实例php
输出json及显示json中的中文汉字
在php中,我们经常需要将数组输出json,只需要使用json_encode函数处理一下数组即可,但有的时候数组里面有中文,使用json_encode函数处理后中文字符被编码成了Unicode,如何才能在json中显示中文呢?请看下文。
首先介绍一下php输出json格式:
一种最简单的用法,就是把数组直接输出为json,如下:
<?php
$arr
=
array('p1'=>'ni"hao','p2'=>2,'ch'=>'码农你好!');
$json
=
json_encode($arr);
echo
$json;
?>
输出的结果为:
{"p1":"ni\"hao","p2":2,"ch":"\u7801\u519c\u4f60\u597d\uff01"}
这里要注意:
双引号在json中会被自动编码为\",这个很好理解,js中字符串中是不允许出来单引号、双引号和反斜杠的。
中文字符被编码成了Unicode
如果是写接口,那直接这样输出就够了,中文无需去做处理。等到了客户端,再去把Unicode的中文转成汉字即可。但如果要在服务器端直接输出汉字出来,那我们可以做如下处理。
<?php
$arr
=
array('p1'=>'nihao','p2'=>2,'ch'=>'码农你好!');
$json
=
json_encode($arr);
echo
decodeUnicode($json);
function
decodeUnicode($str){
return
preg_replace_callback('/\\\\u([0-9a-f]{4})/i',
create_function(
'$matches',
'return
mb_convert_encoding(pack("H*",
$matches[1]),
"UTF-8",
"UCS-2BE");'
),
$str);
}
?>
输出:
{"p1":"ni\"hao","p2":2,"ch":"码农你好!"}
这个操作很简单,其实就是把输出结果匹配一下,把Unicode还原成了汉字。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
关于PHP将JSON输出为中文是可以这样使用的。
希望我的回答可以帮到你,有什么不懂可以追问。
关于phpjson转换中文的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于phpjson转换中文 php 转json的详细内容...