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

2 ответа2

1

Из stackoverflow:

  • Вы можете получить такой инструмент, как iconv, из GnuWin32 и запустить пакетный скрипт для обработки всех ваших файлов таким способом.
    
    Но что они за кодировка сейчас? Если они ANSI, и вы не используете байты со значениями => 128, то они уже без спецификации UTF-8.
    Возможно, вы можете использовать это, чтобы сузить число файлов, которые вам нужно будет обработать - возможно, достаточно, чтобы у вас было всего несколько файлов для преобразования (и вы можете предпочесть сделать это на индивидуальной основе).
  • На самом деле, я делаю это с помощью Notepad++.
    Прежде чем попробовать это, вы должны сделать резервную копию ваших файлов.
    Вам нужно создать макрос, который делает это:
    
    
    1. Конвертировать текущий открытый файл в UTF-8 без спецификации;
    2. Выделите весь текст в вашем файле и скопируйте его (почему это? это похоже на ошибку. если вы этого не сделаете, ваш файл будет заменен вашим текущим содержимым буфера обмена ...);
    3. Сохранить текущий файл;
    4. Закройте текущий файл.
    5. Сохраните этот макрос.
    Теперь откройте ваши PHP- файлы и запустите их с помощью команды «Запуск макроса несколько раз ...». Если вы открыли 100 файлов, дайте ему поработать 100 раз.
-1
<?php
$url = getenv("SERVER_ADDR");
//$url = getenv(HTTP_POST_VARS);
$rootdir='d:\\xampp\\htdocs\\ecoder';
$dir="."; 
$files=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.' was converted to UTF8
'; } } //use this function to get all files inside a directory (including subdirectories) function scan_dir($dir) { $arrfiles = array(); if (is_dir($dir)) { if ($handle = opendir($dir)) { chdir($dir); while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { if (is_dir($file)) { $arr = scan_Dir($file); foreach ($arr as $value) { $arrfiles[] = $dir."/".$value; } } else { $arrfiles[] = $dir."/".$file; } } } chdir("../"); } closedir($handle); } return $arrfiles; } function writeUTF8File($filename,$content) { //บันทึกไฟล์เป็น UTF8 $f=fopen($filename,"w"); # Now UTF-8 - Add byte order mark fwrite($f, pack("CCC",0xef,0xbb,0xbf)); fwrite($f,$content); fclose($f); } ?>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .