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

Тема в разделе "PHP", создана пользователем itpeople, 8 дек 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. itpeople

    itpeople

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

    Вложения:

    • utf8.gif
      utf8.gif
      Размер файла:
      1,5 КБ
      Просмотров:
      22
  2. baltazorg

    baltazorg

    Регистр.:
    7 авг 2008
    Сообщения:
    203
    Симпатии:
    71
    Некоторые ткстовые редакторы (Akelpad например), позволяют при сохранении файла отключать BOM - признак, помогающий определить, что данный файл сохранен в кодировке UTF-8. Скорей всего, это именно из-за этого BOM.
     
    itpeople нравится это.
  3. itpeople

    itpeople

    Регистр.:
    6 дек 2007
    Сообщения:
    546
    Симпатии:
    62
    Именно этим редактором я и пробовал коневертировать, на галочку напротив "BOM" внимания не обращал, теперь вроде понятно, как этот бом выглядит.
     
  4. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    если много файлов можно с функцией по циклу убрать бом
    PHP:
    <?
    function 
    removeBOM($str=""){
        if(
    substr($str0,3) == pack("CCC",0xef,0xbb,0xbf)) {
            
    $str=substr($str3);
        }
        return 
    $str;
    }

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

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

    Ещё если в php файле нет utf8 символов например кириллицы то файл конвертировать в utf8 необязательно.
     
  5. x0x0

    x0x0 Создатель

    Регистр.:
    6 авг 2008
    Сообщения:
    19
    Симпатии:
    1
    NPP может конвертировать с/без BOM
     
  6. prostudent

    prostudent

    Регистр.:
    24 ноя 2008
    Сообщения:
    316
    Симпатии:
    5
    ССылочку не дадите - где его качнуть?
     
  7. itpeople

    itpeople

    Регистр.:
    6 дек 2007
    Сообщения:
    546
    Симпатии:
    62
    Ну вы совсем ленитесь :)
    ссылка
     
Статус темы:
Закрыта.