php接口开发时,数据解析失败问题,字符转义,编码问题

php接口开发时,数据解析失败问题,字符转义,编码问题


情景:

A平台--->向接口请求数据---->接口向B平台请求数据---->B平台返回数据给接口---->接口返回数据给A平台。

数据经过多遍传递,出现编码、特殊字符转义的的问题。

遇到问题:

(1)第一个问题:A发过来的数据,参数值是json字符串,接收到之后无法解析,查看数据后发现json数据中的双引号被转成了"

也就是预定义的字符被转成了HTML实体,需要使用 htmlspecialchars_decode()转回去,然后再交给B平台才能解析。

(2)当接口收到数据返回给A平台时,json有数据,但是数据却解析不了,打印出数据和正常的json数据对比后,

发现比正常的json数据长度多了3位,网上搜索后,说多了bom头,可以使用 json_last_error()函数验证,

示例:

$info = json_decode($data,true);
if(json_last_error() == 4){
     //多了bom头
      $correct_json_str = trim($data, "\xEF\xBB\xBF");
      $info = json_decode($correct_json_str,true);
}

关于这个问题,虽然这样笨拙地解决了,但是还是不知道为什么会这样,

接口的文件编码是utf-8,

返回数据时,header(‘Content-Type:application/json; charset=utf-8‘);也指定了utf-8,

为什么还出现这种问题,LNMP环境、ThinkPHP框架,

欢迎大佬们指点,谢谢!



php接口开发时,数据解析失败问题,字符转义,编码问题

原文地址:https://www.cnblogs.com/gyfluck/p/10417225.html

时间: 2024-10-14 06:33:55

php接口开发时,数据解析失败问题,字符转义,编码问题的相关文章

GPS北斗双模技术应用开发研究--数据解析

上一篇文章大家介绍了几个重要的概念,那下面我们就来解析一下这样的双模输出log,在解析之前我们来看看各个重要标准字段的意义.笔者在实际开发中只用到了其中的四个,分别是GGA,GSA,GSV,RMC,GLL,当然还有其他一些字段,感觉有些是重复的,根据需要解析就好了.下面就分别介绍一下: $XXGGA,(1),(2),(3),(4),(5),(6),(7),(8),(9),M,(10),M,(11),(12)*hh(CR)(LF) 各部分所对应的含义为: (1)定位UTC时间:05时09分01秒

IOS 网络程序开发时数据监控

开发网络程序时,我们能够直观看到往来数据,对开发是十分便利的.这里提供了几种方法: 一.虚拟网卡 1.在iPhone或iPad上创建一个RVI(remote virtual interface)虚拟网卡 用usb把设备和mac相连接,打开命令行工具,输入命令: rvictl -s abcdef01234563e91f1f2f8a8cb0841d2dafeebbc 这里那一长串东西是设备的UDID.使用iTunes可以查询到这个东西.(默认显示的是序列号,点一下序列号三个字,就会切换显示).点击菜

Ume中图片上传后回传数据解析失败的问题

image.js中186行 增加 r=r.replace("<pre>", "").replace("</pre>", ""); 补充:pre有的浏览器样式不一样,用正则替换 r=r.replace(/<pre.*?>/, "").replace("</pre>", ""); uploadComplete: functi

django中使用json.dumps处理数据时,在前台遇到字符转义的问题

django后台代码: import json ctx['dormitory_list'] = json.dumps([{"number": "111", "is_checked": 1}, {"number": "122", "is_checked": 0}, {"number": "133", "is_checked": 1

iOS开发——网络编程OC篇&amp;(九)数据解析

数据解析 关于iOS开发的中数据解析的方法有两种JSON和XML,这里只做简单的介绍,会使用就可以了. JSON—— 关于JSON的解析经过很多爱好者的分析使用相同自带的还是最好的,不管是从使用的容易度还是性能方面 NSJSONSerialization 1 -(void)start 2 { 3 4 NSString* path = [[NSBundle mainBundle] pathForResource:@"Notes" ofType:@"json"]; 5

iOS开发——网络篇&amp;数据解析

数据解析 关于iOS开发的中数据解析的方法有两种JSON和XML,这里只做简单的介绍,会使用就可以了. JSON—— 关于JSON的解析经过很多爱好者的分析使用相同自带的还是最好的,不管是从使用的容易度还是性能方面 NSJSONSerialization 1 -(void)start 2 { 3 4 NSString* path = [[NSBundle mainBundle] pathForResource:@"Notes" ofType:@"json"]; 5

微信现金红包高级红包接口开发亲测

微信现金红包高级红包接口开发时遇到了不少问题,网上搜索发现 微信现金红包高级红包接口开发注意事项 这篇文章问题总结得很完整,里面给的demo是VS高版本写的,运行过程中还是有些参数问题对于首次调试来说有点难度,还有微信支付现金红包接口 的接口介绍,下面的几个问题特别提出: 商户证书,下载的demo需要证书才能正确运行(可调成服务器模拟发送),而证书需要安装到服务器上,demo是控制台程序,需要的证书可直接安装后使用,其中指出的是方法X509Certificate2 Find()中m_Subjec

Base64编码字符串时数据量明显变大

那就是当把byte[]通过Convert.ToBase64String转换成Base64编码字符串时数据量明显变大 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码.它将需要编码的数据拆分成字节数组.以3个字节为一组.按顺序排列24位数据,再把这24位数据分成4组,即每组6位.再在每组的的最高位前补两个0凑足一个字节.这样就把一个3字节为一组的数据重新编码成了4个字节.当所要编码的数据的字节数不是3的整倍数,也就是说在分组时最后一组不够3个字节.这时在最后一组填充1到

iOS开发——XML/JSON数据解析

除了XML和Json,文中还涉及到的一些知识:第三方类库的使用,获取本地文件内容,网站API使用,GCD多线程编程,不做详细介绍,在代码出现的地方会注明. 先安利一波: Json XML 大数据时代,我们需要从网络中获取海量的新鲜的各种信息,就不免要跟着两个家伙打交道,这是两种结构化的数据交换格式.一般来讲,我们会从网络获取XML或者Json格式的数据,这些数据有着特定的数据结构,必须对其进行解析,得到我们可以处理的数据.所谓“解析”,就是从事先规定好的格式串中提取数据.解析的前提是数据的提供方