HTML文件返回为奇怪的字符大杂烩

时间:2018-07-26 09:58:34

标签: php html encoding

我的应用程序中包含以下代码:

header('Content-Type: text/html; charset=utf-8');

header('Content-Length: ' . filesize($filename));
header('Content-Disposition: inline; filename=' . $filename);
header('Content-Transfer-Encoding: binary');
ob_clean();
@readfile($filename);

应该读取一个html文件并写入响应输出中。

现在发生的一件奇怪的事是,它在一台服务器上运行得很好,而在另一台服务器上,它返回类似于编码错误的内容,例如

���&�lyY�]�����8���O��:���x��בw�6_an ����������+�G��͟>m��O�H&�WK�u>��_��(�U��z�_}�e�����ON�o��Y<�#�}��/�˵��}���Q��/ҼI?�Z1+�E��wZ�N묶��S�v�n_�o�B�9��e0��,�}=K[P�����������ڋ�����w���

这绝对不是由于相应文件的编码问题,因为当我替换

时也会发生

@readfile($filename);

echo "ABCDE";

两者都是Linux服务器,Apache和PHP版本非常相似:

PHP 5.6.35 / Apache/2.4.33获取正确的版本,

PHP 5.6.36 / Apache/2.4.18输入错误的密码。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,但是我不清楚为什么。代替ob_clean()的必须是ob_end_clean();