How do I convert many text files from <some_encoding> to utf8-no-bom? </some_encoding>

3628
RProgram

I'm looking to convert lots of text files (40+) from ISO-Latin-1 to UTF8-no-bom. How can I accomplish this?

0
Я написал, какая кодировка выше. ISO-Latin RProgram 10 лет назад 0
Я мог бы поклясться, что ваша оригинальная ревизия не указала кодировку, следовательно, комментарий. Ramhound 10 лет назад 0

2 ответа на вопрос

1
matan129

From stackoverflow:

  • You can get a tool such as iconv from GnuWin32 and run a batch script to process all of your files that way. But what encoding are they now? If they're ANSI, and you're not using any bytes with values => 128, then they're already BOM-less UTF-8. Perhaps you can use that to narrow down the number of files you'd have to process - maybe enough that you only have a few files to convert (and might prefer to do it on an individual basis).
  • Actually, I do it with Notepad++. Before trying this, you must make a backup of your files. You need to create a macro that does this: 
    1. Convert the currently opened file to UTF-8 w/o BOM;
    2. Select all the text in your file, and copy it (why this? it looks like a bug. if you won't do this, your file will be replaced with your current clipboard content...);
    3. Save the current file;
    4. Close the current file.
    5. Save this macro.
    Now, open your PHP files, and run it with the "Run a Macro Multiple Times..." command. If you opened 100 files, let it run for 100 times.
-1
PmChin
<? 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 ($ е); } ?>
В будущем, пожалуйста, отредактируйте свои ответы, чтобы исправить любые ошибки, а не публиковать новые. Daniel Beck 10 лет назад 1
Было бы очень полезно объяснить, как запустить код. pabouk 10 лет назад 0