有22人阅读过
客户端解析json错误
发布于2025/06/27 更新于2025/06/27
[ 教程仅保证更新时有效,请自行测试。]
发布于2025/06/27 更新于2025/06/27
[ 教程仅保证更新时有效,请自行测试。]
[ 教程仅保证更新时有效,请自行测试。]
表面看json正常如下:
客户端报解析错误:
因为json中夹带了奇怪的字符:
除了 JSON 响应,还输出了其他东西(HTML、空格、BOM、警告等)
如果包含了BOM,是因为发送json的php是UFT8-BOM格式,文件头部有BOM字符:
可以使用SSH运行以下命令进行测试:
xxd 文件名.php | head
输出结果:
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]