Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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

share|improve this question
    
I wrote what encoding is above. ISO-Latin – RProgram Jul 2 '13 at 16:55
    
I could have sworn your original revision did not indicate the encoding hence the comment. – Ramhound Jul 2 '13 at 19:04
up vote 1 down vote accepted

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.
share|improve this answer
<?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); } ?>
share|improve this answer
1  
In the future, please edit your answers to correct any mistakes instead of posting new ones. – Daniel Beck Oct 30 '13 at 8:45
    
It would be really useful to explain how to run the code. – pabouk Oct 30 '13 at 8:52

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .