zoukankan      html  css  js  c++  java
  • 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, "xEFxBBxBF");
          $info = json_decode($correct_json_str,true);          
    }

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

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

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

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

    欢迎大佬们指点,谢谢!


  • 相关阅读:
    营销运营中会遇到的名词及解释
    常用excel函数公式及操作示例
    opensuse安装pycharm
    Atom 基础使用
    git使用
    初学Python(第一课)
    django新手第一课
    浅谈session,cookie,sessionStorage,localStorage的区别及应用场景
    事件冒泡的应用
    django站点管理
  • 原文地址:https://www.cnblogs.com/gyfluck/p/10417225.html
Copyright © 2011-2022 走看看