客户端解析json错误
表面看json正常如下:

客户端报解析错误:

因为json中夹带了奇怪的字符:
除了 JSON 响应,还输出了其他东西(HTML、空格、BOM、警告等)
如果包含了BOM,是因为发送json的php是UFT8-BOM格式,文件头部有BOM字符:
可以使用SSH运行以下命令进行测试:
plaintext
xxd 文件名.php | head输出结果:

ef bb bf 就是 UTF-8 的 BOM(Byte Order Mark)
它在文件最开头,在
这会导致服务器输出内容不是纯 JSON,而是以 BOM 开头的 JSON,从而使某些客户端或解析器报错,如:
Unexpected token in JSON at position 0
SyntaxError: JSON.parse: unexpected character
解决方法:
使用SSH执行以下代码,清除BOM头:
plaintext
sed '1s/^\xEF\xBB\xBF//' 文件名.php > temp && mv temp 文件名.php为确保系统中所有 .php 文件都无 BOM:
plaintext
find . -name '*.php' -exec xxd {} \; | grep -B1 'efbbbf'可以找到所有带 BOM 的文件,一并清除。