如何从文件开头删除 ?

我有一个CSS文件,当我使用gedit打开它时看起来很好,但是当它被PHP读取时(将所有CSS文件合并为一个),这个CSS前面有以下字符:

PHP删除了所有空格,因此代码中间的随机会弄乱整个事情。正如我所提到的,当我在gedit中打开文件时,我实际上看不到这些字符,所以我无法很容易地删除它们。

我用谷歌搜索了这个问题,文件编码显然有问题,这是有道理的,因为我一直在通过ftp和rsync将文件转移到不同的Linux / Windows服务器,以及一系列文本编辑器。我对字符编码了解不多,所以帮助将不胜感激。

如果有帮助,则文件将以 UTF-8 格式保存,并且 gedit 不允许我将其保存为 ISO-8859-15 格式(文档包含一个或多个无法使用指定字符编码编码的字符)。我尝试用Windows和Linux行结尾保存它,但都没有帮助。


答案 1

给你三个字:

字节顺序标记

这就是 ISO-8859-1 中 UTF-8 BOM 的表示形式。您必须告诉编辑器不要使用 BOM 或使用其他编辑器将其剥离。

要自动删除物料清单,您可以使用,如此问题所示。awk

正如另一个答案所说,最好的方法是PHP真正正确解释BOM,因为您可以使用mb_internal_encoding(),如下所示:

 <?php
   //Storing the previous encoding in case you have some other piece 
   //of code sensitive to encoding and counting on the default value.      
   $previous_encoding = mb_internal_encoding();

   //Set the encoding to UTF-8, so when reading files it ignores the BOM       
   mb_internal_encoding('UTF-8');

   //Process the CSS files...

   //Finally, return to the previous encoding
   mb_internal_encoding($previous_encoding);

   //Rest of the code...
  ?>

答案 2

记事本++ 中打开文件。从“编码”菜单中,选择“转换为不带 BOM 的 UTF-8”,保存文件,将旧文件替换为此新文件。它会起作用的,该死的肯定。


推荐