美文网首页
PHP中JSON序列化后中文显示问题

PHP中JSON序列化后中文显示问题

作者: 小小奶狗 | 来源:发表于2018-04-28 07:56 被阅读293次
  • 最近写的接口代码中无论用浏览器还是postman,只要输出序列化后的JSON数据中存在中文,中文部分就会转而显示一堆有规律的ASCII表示码。

  • 我第一眼觉得这不是乱码,乱码是文件编码方式和文件查看方式不一致导致,通常乱码是显示一些没有规律的字符。

  • 在接口返回的数据中,我们经常会返回json或者xml格式,php的json序列化函数json_encode非常好用,但是默认会把中文编码为ASCII码(注意,很多人认为这是乱码,其实不是),尤其在调试接口时,看到一大串的ASCII码,一脸懵逼,不知是对是错:
    代码:

# php
class Person
{
    public$num;
    public$name;
 
    function __construct($_num,$_name)
    {
        $this->num=$_num;
        $this->name=$_name; 
    }
}

$pIns=new Person('A001','张三');

//json_encode序列化
$res=json_encode($pIns);
echo$res;
结果: image.png
  • 是不是看着很不爽,解决办法也很简单,网上找的,PHP5.4版本之后加入的功能,已经给Json新增了一个选项: JSON_UNESCAPED_UNICODE。加上这个选项后,就不会自动把中文编码了。
    试一下:
class Person
{
    public$num;
    public$name;
 
    function __construct($_num,$_name)
    {
        $this->num=$_num;
        $this->name=$_name; 
    }
}

$pIns=new Person('A001','张三');

//json_encode序列化 $res=json_encode($pIns,JSON_UNESCAPED_UNICODE);
echo $res;
效果: image.png
  • 当然,由于JSON数据只是起传输作用,传输过程中显示为中文并不安全,信息容易被截取。所以建议使用chrome的jsonview插件,自动将中文ASCLII转换,并且附带格式如图: image.png

相关文章

网友评论

      本文标题:PHP中JSON序列化后中文显示问题

      本文链接:https://www.haomeiwen.com/subject/ruerfxtx.html