При перекодировки из 1251 в utf8 появляется символ в начале файла

Статус
В этой теме нельзя размещать новые ответы.

itpeople

Гуру форума
Регистрация
6 Дек 2007
Сообщения
545
Реакции
64
В игру найди отличия играл очень долго.
Понадобилось перекодировать файлы скрипта из 1251 в utf8. Пробовал и пакетно и вручную текстовыми редакторами - постоянно на сайте ошибки или лишние отступы непонятно откуда.
И чисто случайно заметил, что после перекодировки в файл php в самое начло вставляется еле-еле видный символ - сравнение на скриншоте. Если в начало строки поставить курсор и нажать del - символ пропадает и ошибки в скриптах исчезают.
Этот символ видит только редактор cppanel - сейчас сижу ручками удаляю его из 500 файлов - что это за зверек и как его побороть?
 

Вложения

  • utf8.gif
    utf8.gif
    1,5 KB · Просмотры: 22
Некоторые ткстовые редакторы (Akelpad например), позволяют при сохранении файла отключать BOM - признак, помогающий определить, что данный файл сохранен в кодировке UTF-8. Скорей всего, это именно из-за этого BOM.
 
Именно этим редактором я и пробовал коневертировать, на галочку напротив "BOM" внимания не обращал, теперь вроде понятно, как этот бом выглядит.
 
если много файлов можно с функцией по циклу убрать бом
PHP:
<?
function removeBOM($str=""){
    if(substr($str, 0,3) == pack("CCC",0xef,0xbb,0xbf)) {
        $str=substr($str, 3);
    }
    return $str;
}

foreach (glob("*.php") as $filename) {
    file_put_contents($filename, removeBOM(file_get_contents($filename)));
}
?>
для файлов в каталоге добавить цикл по */*.php и т.д.

для конвертирования:
PHP:
foreach (glob("*.php") as $filename) {
    file_put_contents($filename, iconv('Windows-1251', 'UTF-8', file_get_contents($filename)));
}
php BOM не добавляет.

Ещё если в php файле нет utf8 символов например кириллицы то файл конвертировать в utf8 необязательно.
 
NPP может конвертировать с/без BOM
 
Некоторые ткстовые редакторы (Akelpad например), позволяют при сохранении файла отключать BOM - признак, помогающий определить, что данный файл сохранен в кодировке UTF-8. Скорей всего, это именно из-за этого BOM.
ССылочку не дадите - где его качнуть?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху