fn[mb_convert_encoding] Переконвертирование с авто определением изначальной кодировки

Тема в разделе "PHP Pro", создана пользователем trooll, 1 фев 2010.

Статус темы:
Закрыта.
  1. trooll

    trooll PHP кодер

    Регистр.:
    22 дек 2008
    Сообщения:
    503
    Симпатии:
    116
    Доброго времени суток.
    В общем, сразу приведу пример кода, а дальше уже распишу, что да как:
    PHP:
    <?PHP 
    mb_internal_encoding
    ('utf-8');
    $work_file_contents file_get_contents(getcwd().'/ in.php');
    $work_file_contents mb_convert_encoding($work_file_contents'utf-8''auto');
    file_put_contents (getcwd().'/out.php'$work_file_contents);
    ?>
    Среда работы:
    1) OS WIN XP Pro
    2) PHP 5.2.4 (полная стандартная комплектация всех библиотек)
    3) DENWER_3
    Задача:
    Перекодировать исходный файл in.php в кодировку utf-8, автоматически определив исходную кодировку файла, и сохранить результат в файл out.php
    Описываю проблему:
    Значит изначальный файл in.php находиться в кодировку windows-1251, Notepad++ и PHP Expert Editor определяют кодировку как ANSI.
    При конвертации функцией mb_convert_encoding() с параметром 'auto' в качестве исходной кодировке, кодировка так и остается ANSI, причем все кириллические символы из документа пропадают.
    Если указать явственно начальную кодировку в виде 'windows-1251', то конвертация проходит, кодировка файла изменяется при этом:
    Notepad++ пишет что кодировка ANSI as UTF-8 (то есть как я понял UTF-8 без BOM)
    HP Expert Editor пишет что кодировка просто UTF-8
    При этом все кириллические символы сохраняются на своих местах. То есть все ок.
    Что вообще за дурь блин происходит?
    Почему так?
    Как это можно реализовать?
     
  2. uNknownMark

    uNknownMark

    Регистр.:
    22 сен 2007
    Сообщения:
    393
    Симпатии:
    169
    Если я не ошибаюсь начальную кодировку строки можно узнать с помощью функции mb_detect_encoding. Для файла вроде нет аналогичных функций, берешь файл дергаешь из него одну строку, узнаешь кодировку, сохраняешь в нужной кодировке весь файл.
    Кстати возможно это глюк определения кодировок разными редакторами. На самом деле все может быть нормально!
     
Статус темы:
Закрыта.