PHP json_encode返回的json前端获取时出现unicode转码和反斜杠\导致无法解析的解决办法...

本文主要是介绍PHP json_encode返回的json前端获取时出现unicode转码和反斜杠\导致无法解析的解决办法...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

今天用PHP写一个接口文件出现了一个非常奇葩的问题,首先我的json字符串绝对没有问题,然后使用json_encode编码后echo出去作为接口的返回值。前端使用JS获取接口返回的json对象时,返回的是一个字符串,不是Object(正常应该返回JSON的Object)。而且这个字符串还被Unicode转码过。

(截图只贴了一部分json值)
我以为Unicode转码的问题,就在网上找了一些文章看看,可以通过

json_encode("中文", JSON_UNESCAPED_UNICODE);

或者 

mb_convert_encoding(pack("H*", $matches[1]), "UTF-8", "UCS-2BE")

等方法不让json_encode转码或者如果转码了想办法解码。

1、我的json字符串格式绝对没有问题; 

2、我写了很多接口,接口文件的模板格式都是一致的,为什么其它接口文件没有问题,偏偏这个有问题;

3、我的开发环境在windows,使用XAMPP环境,PHP版本是5.6.28,这个接口在windows下执行没有问题;

4、我的生产环境是Linux,PHP版本5.4,出现了这个问题。

就是因为这个原因很奇葩,搞的我一个上午各种查资料才解决问题,而且导致问题的原因也很简单和奇葩。

仔细看看返回值,除了返回的是一个字符串不是Object之外,在json值之前有一些空格,但是不知道这个空格哪来的,导致JSON解析失败。又在网上查找一通,大部分人说因为BOM的原因,但是为啥发布到Linux之后其它接口文件没有出现,而这个接口文件就有这个问题。所以我肯定不是BOM问题。最后终于定位了问题:代码文件要顶格写代码(心中一万个草泥马飞过……)

看到上图中的第一行代码没,一定要顶格写,不要在代码文件开头留下空格。之所以我会出现这个问题是,我在这个文件全选了所有文字,并使用eclipse的format功能格式化了一下代码格式,就没留意这个小细节。而且代码不顶格在windows下执行是没有问题的,但是在Linux环境下就出现了问题,也可能是PHP版本的问题,这个没有细究。

今天也算是长见识了,从来没想过代码不顶格写,会导致json返回值错误,而且数一数前端返回的json字符串前面出现的空格数,还真跟接口文件头部没顶格留下的空格数一样,我戳~

不知道是不是只有新手才会出现这个问题,还是写下来作为记录吧,以防后面再犯。

 

 

 

原文: https://blog.csdn.net/wangyuchun_799/article/details/74390726

这篇关于PHP json_encode返回的json前端获取时出现unicode转码和反斜杠\导致无法解析的解决办法...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/974421

相关文章

element-ui下拉输入框+resetFields无法回显的问题解决

《element-ui下拉输入框+resetFields无法回显的问题解决》本文主要介绍了在使用ElementUI的下拉输入框时,点击重置按钮后输入框无法回显数据的问题,具有一定的参考价值,感兴趣的... 目录描述原因问题重现解决方案方法一方法二总结描述第一次进入页面,不做任何操作,点击重置按钮,再进行下

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

在C#中合并和解析相对路径方式

《在C#中合并和解析相对路径方式》Path类提供了几个用于操作文件路径的静态方法,其中包括Combine方法和GetFullPath方法,Combine方法将两个路径合并在一起,但不会解析包含相对元素... 目录C#合并和解析相对路径System.IO.Path类幸运的是总结C#合并和解析相对路径对于 C

SQL Server数据库磁盘满了的解决办法

《SQLServer数据库磁盘满了的解决办法》系统再正常运行,我还在操作中,突然发现接口报错,后续所有接口都报错了,一查日志发现说是数据库磁盘满了,所以本文记录了SQLServer数据库磁盘满了的解... 目录问题解决方法删除数据库日志设置数据库日志大小问题今http://www.chinasem.cn天发

python获取当前文件和目录路径的方法详解

《python获取当前文件和目录路径的方法详解》:本文主要介绍Python中获取当前文件路径和目录的方法,包括使用__file__关键字、os.path.abspath、os.path.realp... 目录1、获取当前文件路径2、获取当前文件所在目录3、os.path.abspath和os.path.re

Java解析JSON的六种方案

《Java解析JSON的六种方案》这篇文章介绍了6种JSON解析方案,包括Jackson、Gson、FastJSON、JsonPath、、手动解析,分别阐述了它们的功能特点、代码示例、高级功能、优缺点... 目录前言1. 使用 Jackson:业界标配功能特点代码示例高级功能优缺点2. 使用 Gson:轻量

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

Java子线程无法获取Attributes的解决方法(最新推荐)

《Java子线程无法获取Attributes的解决方法(最新推荐)》在Java多线程编程中,子线程无法直接获取主线程设置的Attributes是一个常见问题,本文探讨了这一问题的原因,并提供了两种解决... 目录一、问题原因二、解决方案1. 直接传递数据2. 使用ThreadLocal(适用于线程独立数据)

python中json.dumps和json.dump区别

《python中json.dumps和json.dump区别》json.dumps将Python对象序列化为JSON字符串,json.dump直接将Python对象序列化写入文件,本文就来介绍一下两个... 目录1、json.dumps和json.dump的区别2、使用 json.dumps() 然后写入文

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.