Я хочу конвертировать много текстовых файлов (40+) из ISO-Latin-1 в UTF8-no-bom. Как я могу сделать это?
2 ответа
1
Из stackoverflow:
Вы можете получить такой инструмент, как iconv, из GnuWin32 и запустить пакетный скрипт для обработки всех ваших файлов таким способом. Но что они за кодировка сейчас? Если они ANSI, и вы не используете байты со значениями => 128, то они уже без спецификации UTF-8. Возможно, вы можете использовать это, чтобы сузить число файлов, которые вам нужно будет обработать - возможно, достаточно, чтобы у вас было всего несколько файлов для преобразования (и вы можете предпочесть сделать это на индивидуальной основе).
На самом деле, я делаю это с помощью Notepad++. Прежде чем попробовать это, вы должны сделать резервную копию ваших файлов. Вам нужно создать макрос, который делает это:
- Конвертировать текущий открытый файл в UTF-8 без спецификации;
- Выделите весь текст в вашем файле и скопируйте его (почему это? это похоже на ошибку. если вы этого не сделаете, ваш файл будет заменен вашим текущим содержимым буфера обмена ...);
- Сохранить текущий файл;
- Закройте текущий файл.
- Сохраните этот макрос.
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); } ?>