BOM 被添加到任何 return 或模具响应
BOM being added to any return or die response
我正在使用 jQuery 从端点
检索 json 响应
die(json_encode(array('success' => 3, 'message' => 'You must use at least 1 credit or more.')));
每当我检查 chrome 开发人员工具中收到的 JSON 响应时,我都会收到一个红点,显示在 json 响应之前添加了 \ufeff。我已经在 Notepad++ 中使用 UTF-8 对 PHP 文件进行了编码,但它仍然会在任何响应的前面添加 BOM 字符。如果我 return 任何东西或改变模具,它仍然会在响应中显示 BOM 字符。
我在我的本地主机上尝试了相同的文件,它工作得非常好,但是在服务器上它添加了字符。
我不知道是什么导致了这个问题,我们将不胜感激任何帮助。
这似乎是此服务器配置的一个问题,因为它可以在其他服务器上运行。与此同时,在解析 JSON 响应之前,我使用 javascript 过滤了响应以删除任何 BOM 字符。
有解决方法(从所有 PHP 文件中删除 BOM,在脚本启动时 ob_clean
),但真正的解决方案是使用 --enable-zend-multibyte
编译 PHP或 --enable-mbstring
,或等到 PHP 团队修复它。
由于您有时无法控制托管环境中的 PHP 版本和编译标志,我更喜欢从所有 PHP 文件中删除 BOM,以防止出现此类问题。这将适用于任何服务器。
您的解决方案是使用 JS 修复输出。但对于其他用途,例如通过 PHP 生成图像或其他二进制数据,或发送 headers,您无法通过这种方式解决。
我正在使用 jQuery 从端点
检索 json 响应die(json_encode(array('success' => 3, 'message' => 'You must use at least 1 credit or more.')));
每当我检查 chrome 开发人员工具中收到的 JSON 响应时,我都会收到一个红点,显示在 json 响应之前添加了 \ufeff。我已经在 Notepad++ 中使用 UTF-8 对 PHP 文件进行了编码,但它仍然会在任何响应的前面添加 BOM 字符。如果我 return 任何东西或改变模具,它仍然会在响应中显示 BOM 字符。
我在我的本地主机上尝试了相同的文件,它工作得非常好,但是在服务器上它添加了字符。
我不知道是什么导致了这个问题,我们将不胜感激任何帮助。
这似乎是此服务器配置的一个问题,因为它可以在其他服务器上运行。与此同时,在解析 JSON 响应之前,我使用 javascript 过滤了响应以删除任何 BOM 字符。
有解决方法(从所有 PHP 文件中删除 BOM,在脚本启动时 ob_clean
),但真正的解决方案是使用 --enable-zend-multibyte
编译 PHP或 --enable-mbstring
,或等到 PHP 团队修复它。
由于您有时无法控制托管环境中的 PHP 版本和编译标志,我更喜欢从所有 PHP 文件中删除 BOM,以防止出现此类问题。这将适用于任何服务器。
您的解决方案是使用 JS 修复输出。但对于其他用途,例如通过 PHP 生成图像或其他二进制数据,或发送 headers,您无法通过这种方式解决。