Как мне преобразовать многие текстовые файлы из <some_encoding> в utf8-no-bom?

Я хочу конвертировать много текстовых файлов (40+) из ISO-Latin-1 в UTF8-no-bom. Как я могу сделать это?

2 ответа

Решение

Из stackoverflow:

  •  Вы можете получить такой инструмент, как iconv от GnuWin32 и 
    запустите пакетный скрипт для обработки всех ваших файлов таким способом.
    
    Но что они за кодировка сейчас? Если они ANSI, 
    и вы не используете байты со значениями => 128,
    тогда они уже без спецификации UTF-8.
    Возможно, вы можете использовать это, чтобы сузить число 
    файлы, которые вы должны обработать - может быть, достаточно, чтобы у вас был только
    несколько файлов для преобразования (и может предпочесть сделать это на индивидуальной основе). 
  • На самом деле, я делаю это с помощью Notepad++.
    Прежде чем пытаться это сделать, вы должны сделать резервную копию ваших файлов.
    Вам нужно создать макрос, который делает это:
    
    
    1. Конвертировать текущий открытый файл в UTF-8 без спецификации;
    2. Выделите весь текст в вашем файле и скопируйте его (почему? Это похоже на ошибку. Если вы этого не сделаете, ваш файл будет заменен вашим текущим содержимым буфера обмена...);
    3. Сохранить текущий файл;
    4. Закройте текущий файл.
    5. Сохраните этот макрос.
    Теперь откройте ваши PHP- файлы и запустите их с помощью команды "Запуск макроса несколько раз...". Если вы открыли 100 файлов, дайте ему поработать 100 раз.
<? PHP
$ url = getenv ("SERVER_ADDR");
// $ url = getenv (HTTP_POST_VARS);
$ RootDir = 'd: \\ XAMPP \\ HTDOCS \\ ecoder';
$ Реж = ""; 
$ файлов = scan_dir ($ RootDir);
  foreach ($ files as $ file) {
    $ info = pathinfo ($ file);
    $ extF = $ info ["extension"];
    if ($ extF == "php" || $ extF == "txt" || $ extF == "js" || $ extF == "css") { 
     echo $ file. " 
"; $ data = file_get_contents ($ file); writeUTF8File ($ file, $ data); echo $ file. ' был преобразован в UTF8
"; } } // использовать эту функцию, чтобы получить все файлы в каталоге (включая подкаталоги) function scan_dir ($ dir) { $ arrfiles = array (); if (is_dir ($ dir)) { if ($ handle = opendir ($ dir)) { ChDir ($ реж); while (false! == ($ file = readdir ($ handle))) { if ($ file! = "." && $ file! = "..") { if (is_dir ($ file)) { $ arr = scan_Dir ($ file); foreach ($ arr как $ value) { $ arrfiles [] = $ dir. "/". $ value; } } еще { $ arrfiles [] = $ dir. "/". $ file; } } } ChDir ( "../"); } closedir ($ ручка); } вернуть $ arrfiles; } функция writeUTF8File ($ filename, $ content) {// บันทึก ไฟล์ เป็น UTF8 $ F = FOPEN ($ имя_файла, "ш"); # Теперь UTF-8 - Добавить метку порядка байтов fwrite ($ f, pack ("CCC", 0xef, 0xbb, 0xbf)); FWRITE ($ е, $ содержание); fclose ($ е); } ?>
Другие вопросы по тегам