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

相关文章

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

javacv依赖太大导致jar包也大的解决办法

《javacv依赖太大导致jar包也大的解决办法》随着项目的复杂度和依赖关系的增加,打包后的JAR包可能会变得很大,:本文主要介绍javacv依赖太大导致jar包也大的解决办法,文中通过代码介绍的... 目录前言1.检查依赖2.更改依赖3.检查副依赖总结 前言最近在写项目时,用到了Javacv里的获取视频

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达