Как удалить ï »¿из начала файла?

138
задан Peter Mortensen 9 May 2015 в 16:50
поделиться

4 ответа

Три слова для вас:

Метка порядка байтов (BOM)

Это представление спецификации UTF-8 в ISO-8859-1. Вы должны сказать своему редактору, чтобы он не использовал спецификации или не использовал другой редактор, чтобы вырезать их.

Чтобы автоматизировать удаление спецификации, вы можете использовать awk , как показано в этом вопросе .

Как в другом ответе говорится , лучше всего, чтобы PHP действительно правильно интерпретировал спецификацию, для этого вы можете использовать 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...
  ?>
143
ответ дан 23 November 2019 в 23:15
поделиться

Я не знаю PHP, поэтому не знаю, возможно ли это, но лучшим решением было бы читать файл как UTF-8, а не в какой-либо другой кодировке. Спецификация на самом деле имеет НУЛЕВУЮ ШИРИНУ, БЕЗ РАЗРЫВА. Это пробел, поэтому, если бы файл читался в правильной кодировке (UTF-8), то спецификация интерпретировалась бы как пробел и игнорировалась бы в результирующем файле CSS.

Еще одно преимущество чтения файла в правильной кодировке состоит в том, что вам не нужно беспокоиться о неверной интерпретации символов. Ваш редактор сообщает вам, что кодовая страница, на которой вы хотите ее сохранить, не будет поддерживать все символы, которые вам нужны. Если PHP затем читает файл в неправильной кодировке, то очень вероятно, что другие символы, кроме спецификации, автоматически неверно интерпретируются. Используйте везде UTF-8, и эти проблемы исчезнут.

5
ответ дан 23 November 2019 в 23:15
поделиться

Спецификация - это просто последовательность символов ($ EF $ BB $ BF для UTF-8), поэтому просто удалите их с помощью сценариев или настройте редактор, чтобы он не добавлялся.

Из Удаление спецификации из UTF-8 :

#!/usr/bin/perl
@file=<>;
$file[0] =~ s/^\xEF\xBB\xBF//;
print(@file);

Я уверен, что это легко переводится на PHP.

11
ответ дан 23 November 2019 в 23:15
поделиться

Если вам нужно иметь возможность удалять BOM из файлов с кодировкой UTF-8, то сначала вам нужно обзавестись редактором, который их понимает.

Лично я использую E Text Editor.

В правом нижнем углу есть опции для кодировки символов, включая тег BOM. Загрузите ваш файл, снимите выделение Byte Order Marker, если оно выбрано, пересохраните, и все должно быть готово.

Alt text http://oth4.com/encoding.png

E не бесплатна, но есть бесплатная пробная версия, и это отличный редактор (ограниченная TextMate совместимость).

1
ответ дан 23 November 2019 в 23:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: