PHP中json序列化后中文的编码显示问题

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

代码:

<?php
class A
{
    public $num;
    public $name;

    function __construct($_num,$_name)
    {
        $this->num=$_num;
        $this->name=$_name;
    }
}

$class=new A(‘A001‘,‘张三‘);

//json_encode序列化
$json=json_encode($class);
echo $json;

结果:

是不是看着很不爽,

解决办法也很简单,网上找的,PHP5.4版本,已经给Json新增了一个选项: JSON_UNESCAPED_UNICODE。加上这个选项后,就不会自动把中文编码了。

试一下:

class A
{
    public $num;
    public $name;

    function __construct($_num,$_name)
    {
        $this->num=$_num;
        $this->name=$_name;
    }
}

$class=new A(‘A001‘,‘张三‘);

//json_encode序列化
$json=json_encode($class,JSON_UNESCAPED_UNICODE);//加上JSON_UNESCAPED_UNICODE
echo $json;

结果:

时间: 2024-10-27 06:32:11

PHP中json序列化后中文的编码显示问题的相关文章

用js解析经json序列化后的C#的DateTime类型数据

用js解析经json序列化后的C#的DateTime类型数据 (2012-09-21 19:36:03) 转载▼ 标签: 杂谈 分类: javascript // val为经json直接序列化后的C#的DateTime类型的数据function formatTime(val) {    var re = /-?\d+/;    var m = re.exec(val);    var d = new Date(parseInt(m[0]));// 按[2012-02-13 09:09:09]的格

C#中JSON序列化和反序列化

json序列化和反序列化帮助类: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Serialization; using System.Runtime.Serialization.Json; using System.IO; using System.Text.RegularExpressions; using System.We

解决php函数json_encode转换后中文被编码为unicode

大家都知道使用函数json_encode()可以方便快捷地将数组进行json编码转换,但是如果数组值存在着中文,json_encode会将中文转换为unicode编码,例如: <?PHP $array = array('中国','美国','高富帅','白富美','屌丝'); echo json_encode($array); 打印出的结果为: ["\u4e2d\u56fd","\u7f8e\u56fd","\u9ad8\u5bcc\u5e05&quo

Play中JSON序列化

根据经验Json处理是比较简单的,但是Play和akka-http的序列化让我烦恼了不少时间,所以我从自己的角度记录一下Play的JSON处理,代码也都是从官方文档复制后重新整理的,下面是参考的官方文档下有几篇JSON的文章 Working with Json JSON basics JSON with HTTP JSON Reads/Writes/Format Combinators JSON automated mapping JSON Transformers 实体序列化例子 1.本例中使

IE中打开title为中文UTF-8编码的网页会显示空白页

原因:这是由于IE解析网页编码时以HTML内的标签优先,而后才是HTTP header内的讯息:而mozilla系列的浏览器则刚刚相反.由于UTF-8为3个字节表示一个汉子,而普通的GB2312或BIG5是两个.页面输出时,由于上述原因,使浏览器解析.输出<title></title>的内容时,如果在</title>前有奇数个全角字符时,IE把UTF-8当作两个字节解析时出现半个汉字的情况,这时该半个汉字会和</title>的<结合成一个乱码字,导致I

Asp.Net Core中Json序列化处理整理

一.Asp.Net Core中的Json序列化处理使用的是Newtonsoft.Json,更多参考:C# Newtonsoft.Json JsonSerializerSettings配置序列化操作,C# Json序列化工具--Newtonsoft.Json简介和使用 1.Newtonsoft.Json仅 依赖.Net Standard所以支持.Net Framework也支持.Net Core 2.更多说明 /* * 1.在Core Mvc中JsonResult 默认支持Get请求 * 2.使用

json序列化后的是字符串,不是二进制。是字符串!!!确定不是二进制!!!

1.现有一个自定义对象需要储存到sql数据库中去.这个对象里面属性很多,甚至包含一些元素量打到几十万的List集合属性.本人试着使用JSON序列化这个对象,储存到数据库,报maxjsonlength超限,于是修改为了Int32.MaxValue.这样做,虽然不报错了,但是JOSN字符串肯定很长的吧,这样,会使得数据库文件很大的吧.我想问的是,采用二进制储存,会不会没有这么大? : 从业务上说,为啥不把这些数据分解成数据库记录来存储?而要序列化打包成一堆难以查询的数据来存储?从技术上说,个人认为你

EF中Json序列化对象时检测到循环引用的解决办法

第一种方法:使用Newtonsoft.Json中的方法注释,在Json序列化的时候忽略导航属性 例:using Newtonsoft.Json; public class Users { public int Id { get; set; } public string LoginId { get; set; } public string LoginPwd { get; set; } [JsonIgnore] public virtual ICollection Roles { get; se

EntityFramework中Json序列化的循环引用问题解决--Newtonsoft.Json

1.在使用EF时,由于数据库主外键关联,将对象进行Json序列化时会遇到循环引用的问题 //EF 中由于数据库主外键关联,对象的序列化经常出现循环引用问题 //使用.Net 自带的序列化工具,序列化出现循环引用问题 List<student> list = _Context.students.ToList(); JavaScriptSerializer ser = new JavaScriptSerializer(); string str = ser.Serialize(list); Con