Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony2从控制器响应中删除UTF-8 BOM_Symfony_Httpresponse_Byte Order Mark - Fatal编程技术网

Symfony2从控制器响应中删除UTF-8 BOM

Symfony2从控制器响应中删除UTF-8 BOM,symfony,httpresponse,byte-order-mark,Symfony,Httpresponse,Byte Order Mark,在创建“强制下载”操作时,我发现控制器生成的所有响应都包括UTF-8 BOM(ï»?)。这与常规页面无关,但对于下载的文件是不可取的,因为JPG或ZIP在一些Windows查看软件中被报告为损坏。因此,主要目标是从控制器输出中删除BOM表 到目前为止,我已经做到了: 1-使用Win Grep搜索我网站上每个文件的BOM块。零结果 2-在同一web服务器上创建一个非symfony test.php,并检查客户端上的输出。没有物料清单 有什么想法吗 提前感谢,, Z 更新:测试代码1。生成的JPG包

在创建“强制下载”操作时,我发现控制器生成的所有响应都包括UTF-8 BOM(ï»?)。这与常规页面无关,但对于下载的文件是不可取的,因为JPG或ZIP在一些Windows查看软件中被报告为损坏。因此,主要目标是从控制器输出中删除BOM表

到目前为止,我已经做到了:

1-使用Win Grep搜索我网站上每个文件的BOM块。零结果

2-在同一web服务器上创建一个非symfony test.php,并检查客户端上的输出。没有物料清单

有什么想法吗

提前感谢,, Z

更新:测试代码1。生成的JPG包括BOM表

public function downloadAction(Request $request){
    $filename= 'test.jpg';
    $response = new Response(file_get_contents($filename));
    $response->headers->set('Content-Type',mime_content_type($filename));        
    $response->headers->set('Content-Disposition', 'attachment; filename="' . basename($filename) . '"');
   return $response;
public function downloadAction(Request $request){
echo 'hello world.';
exit; 
}

测试代码2。生成的页面还包括BOM表

public function downloadAction(Request $request){
    $filename= 'test.jpg';
    $response = new Response(file_get_contents($filename));
    $response->headers->set('Content-Type',mime_content_type($filename));        
    $response->headers->set('Content-Disposition', 'attachment; filename="' . basename($filename) . '"');
   return $response;
public function downloadAction(Request $request){
echo 'hello world.';
exit; 
}


更新2:我刚刚尝试过:从头开始创建一个全新的symfony2项目,使用相同的IDE添加了一个测试控制器/操作,猜猜怎么着:没有BOM..所以,我猜我的symfony站点中有什么东西正在拦截响应并添加BOM块。

著名的UTF-8 BOM是由PEAR下的LocalizeRoute.php细枝扩展添加的。在我的特殊情况下,它通过该文件过滤所有响应,将BOM块添加到每个已交付的页面。从LocalizeRoute.php中删除BOM就足以解决此问题。感谢nifr建议BOM搜索。使用free window的工具WinGrep在整个服务器上运行二进制搜索。非常感谢。

您能给我们看一下操作代码吗?更新了答案,将两个测试代码都包括在内。我在这个答案中提供了几个解决方案建议(即查找BOM块、删除)。。昨天我只是想回去看看。。。遗憾的是,问题作者删除了这个问题。。。呃…对不起,尼弗,那是我。由于这个问题不再反映实际问题,因此决定删除该职位。不确定这里的电话是否正确,我想我会把它连接到这里。问题仍然存在。非常感谢您昨天的贡献。由于这似乎是一个非常简单的hello world应用程序,您可以上载项目(或涉及的部分),以便我可以检查BOM问题是否发生在我的设置中(并使用我的工具在文件中搜索BOM)?我还可以测试这里是否包含bom,以便Xsendfile和X-Accel解决问题。