578
文章
·
58765
阅读
578
文章
·
58765
阅读

有22人阅读过 客户端解析json错误
发布于2025/06/27 更新于2025/06/27
[ 教程仅保证更新时有效,请自行测试。]

表面看json正常如下:

image.png

客户端报解析错误:

image.png

因为json中夹带了奇怪的字符:

除了 JSON 响应,还输出了其他东西(HTML、空格、BOM、警告等)

如果包含了BOM,是因为发送json的php是UFT8-BOM格式,文件头部有BOM字符:

可以使用SSH运行以下命令进行测试:

xxd 文件名.php | head

输出结果:

image.png

ef bb bf 就是 UTF-8 的 BOM(Byte Order Mark)

它在文件最开头,在 <php 之前输出了不可见字符,

这会导致服务器输出内容不是纯 JSON,而是以 BOM 开头的 JSON,从而使某些客户端或解析器报错,如:


Unexpected token in JSON at position 0

SyntaxError: JSON.parse: unexpected character


解决方法:

使用SSH执行以下代码,清除BOM头:

sed '1s/^\xEF\xBB\xBF//' 文件名.php > temp && mv temp 文件名.php


为确保系统中所有 .php 文件都无 BOM:

find . -name '*.php' -exec xxd {} \; | grep -B1 'efbbbf'

可以找到所有带 BOM 的文件,一并清除。

文章对你有帮助吗?
  • 一般[0]
  • 很赞[0]
  • 没用[0]
  • 垃圾[0]
  • 无语[0]
扫一扫,手机浏览手机访问本站