首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从文件的开头删除?

如何从文件的开头删除?
EN

Stack Overflow用户
提问于 2010-07-15 21:35:37
回答 18查看 221.3K关注 0票数 163

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

PHP去掉了所有的空格,所以代码中间的一个乱码就把整个事情搞乱了。正如我所提到的,当我在gedit中打开文件时,我实际上看不到这些字符,所以我不能很容易地删除它们。

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

如果有帮助,文件是以UTF-8格式保存的,而gedit不允许我以ISO-8859-15格式保存(文档包含一个或多个无法使用指定字符编码进行编码的字符)。我试着用Windows和Linux行结束符来保存它,但是都没有用。

EN

回答 18

Stack Overflow用户

回答已采纳

发布于 2010-07-15 21:37:32

给你三个字:

Byte Order Mark (BOM)

这就是ISO-8859-1中UTF-8 BOM的表示形式。你必须告诉你的编辑器不要使用BOM,或者使用不同的编辑器将它们去掉。

要自动删除物料清单,您可以使用this question中所示的awk

作为PHP,最好的方法是正确地解释another answer says,为此,您可以使用mb_internal_encoding(),如下所示:

代码语言:javascript
复制
 <?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...
  ?>
票数 160
EN

Stack Overflow用户

发布于 2013-12-20 05:51:19

PHP中,您可以执行以下操作来删除所有非字符,包括相关字符。

代码语言:javascript
复制
$response = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $response);
票数 23
EN

Stack Overflow用户

发布于 2013-07-15 21:03:42

对于那些拥有shell访问权限的用户,这里有一个小命令,用于查找在public_html目录中设置了BOM的所有文件-请确保将其更改为您在服务器上的正确路径

代码:

代码语言:javascript
复制
grep -rl $'\xEF\xBB\xBF' /home/username/public_html

如果您对vi编辑器很熟悉,可以在vi中打开该文件:

代码语言:javascript
复制
vi /path-to-file-name/file.php

然后输入命令以删除BOM表:

代码语言:javascript
复制
set nobomb

保存文件:

代码语言:javascript
复制
wq
票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3255993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档