Интересные задачи верстки и клиентского программирования

Массовая перекодировка файлов

добавил Шубин Александр 18 Июль, 2012


Когда то давно сделал для себя небольшую программку по массовой перекодировке файлов из UTF-8 в любую кодировку и наоборот из любой кодировки в UTF-8. Перекодируются все файлы с нужными расширениями в папке с декодером и во всех подпапках.

Это был мой первый опыт в ООП. Программа написана на php.

Что сделать чтобы заработало?

1. Перейдите по ссылке:
http://verstaem.com/examples/decoder/decoder.php

2. Сохраните файл к себе на компьютер.

3. Укажите параметры скрипта.
В самом скрипте в самом начале есть короткий readme. Советую с ним ознакомиться. Но на всякий случай здесь я еще раз поясню все параметры скрипта.

В скачанном файле есть строка в самом начале:

$FROM = 'windows-1251';
$TO = 'utf-8';
$EXTENSIONS = array(
    'php',
);
$decoder = new CDecoder($FROM, $TO, $EXTENSIONS);

В этой строке задаются все параметры скрипта.

Первый параметр — ИЗ какой кодировки конвертировать.
Второй параметр — В какую кодировку конертировать.
Третий парамметр — расширение файлов, с которыми скрипт будет работать.

4. Закачайте файл на сервер с поддержкой php в нужную папку.
Нужно закачать скрипт в папку с файлами которые вы хотите перекодировать. Все файлы в папке и поддиректориях будут перекодированы в соответствии с параметрами которые вы указали на третьем шаге.

5. Запустите скрипт.
Для запуска просто откройте его в браузере. Например если адрес сайта verstaem.com и вы закачали скрипт в папку files, то откройте в браузере адрес http://verstaem.com/files/decoder.php

Приведу пример.

У меня есть папка «texts» на сервере в которой лежит куча текстовых файлов с расширением «txt». Все эти файлы в кодировке windows-1251, но мне нужно их все перекодировать в UTF-8.

Я указываю скрипту параметры

$decoder = new CDecoder('windows-1251', 'utf-8', array('txt'));

После чего закидываю скрипт в нужную папку.

И запускаю его в браузере http://verstaem.com/texts/decoder.php

Все. Текстовые файлы в папке texts перекодировались из windows-1251 в utf-8. Никакие другие файлы не были затронуты.


добавил Шубин Александр 18 Июль, 2012
Рубрика: Программы


6 комментариев

  • Илья:

    Интересно, файл кто-нибудь за 4 года скачал? Вы же сами пишите «И запускаю его в браузере http://verstaem.com/texts/decoder.php«.. как его, блин, можно скачать, если он запускается… скачать можно только уже результат. Сделайте архив и поделитесь нормально с людьми.

    • Да, скачал.
      При последнем переносе сайта на другой хостинг забыл отключить исполнение скриптов в папке с примерами. Всего пару месяцев скрипт был не доступен.
      Теперь нормально ссылка на скрипт работает. Спасибо за обратную связь 🙂

  • Ден:

    Спасибо друг, очень помог!

  • Николай:

    Подскажите пожалуйста: Как будет действовать если не все файлы одной кодировки? Не будет изменять или оставит кракозябры? 🙂

    • Николай:

      Посмотрел в исходнике needToConvert… Отличная штука, спасибо за класс, буду пробовать.

      • Пожалуйста 🙂
        Там класс всего на 100 строк. Довольно просто все. Проверка кодировки есть. То есть каждый конкретный файл проверяется в UTF-8 он или нет. Насколько я знаю это единственное что можно понять достоверно. Все прочие кодировки однозначно определить нельзя. То есть если файл уже в utf, то повторно он конвертирован уже не будет. Или наоборот если вы из utf в другую кодировку конвертируете, то скрипт увидит, что файл и так уже не в utf и его пропустит

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *