Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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

2 Answers 2

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

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.