php json_encode函数如何才能不编码中文汉字

PHP使用json_encode函数时,发现中文汉字被编码成"\u"开头的英文字符串,如何才能不被编码。
<?php
$data = array('中文汉字');
echo json_encode($data);
//返回:["\u4e2d\u6587\u6c49\u5b57"]
 
已邀请:

liuliangsong - 80后IT民工

赞同来自:

1、首先知道PHP的版本号
  可以使用"php -v"命令查看php版本号。
# php -v
PHP 5.4.16 (cli) (built: May 12 2016 13:45:17) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
 
2、PHP 5.4.0以上版本:
  如果PHP版本号大于5.4.0那就好办,直接将json_encode函数的第二个参数设置成JSON_UNESCAPED_UNICODE常量即可,这样json_encode函数就不会再将汉字编码。
<?php
$data = array('name'=>'爱E族', 'url'=>'http://aiezu.com');
echo json_encode($data, JSON_UNESCAPED_UNICODE);
输出:
{"name":"爱E族","url":"http:\/\/aiezu.com"}

 3、PHP 5.4.0以下版本:
<?php
$data = array('name'=>'爱E族', 'url'=>'http://aiezu.com');
$json_data = json_encode($data);
$json_data = preg_replace_callback("#\\\\u([a-z0-9]{4})#i", function( $match ) {
   return mb_convert_encoding(pack("H*", $match[1]), "UTF-8", "UCS-2BE");
}, $json_data);
echo $json_data;
输出:
{"name":"爱E族","url":"http:\/\/aiezu.com"}

要回复问题请先登录注册