美文网首页
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