Tulipahan tällaiselle tarvetta, niin ajattelin laittaa jakoon.
Muuttaa siis tiedostojen merkkikoodauksen ISO-8859-1:stä UTF-8:ksi. Huomattava on, että tämä rikkoo niin binääritiedostot, kuin jo valmiiksi UTF-8:aa olevat tiedostot. Aja siis vain kerran.
Käytetään komentoriviltä (toki voi muokata veppiserverikäyttöön), ja toimii testatusti ainakin find -komennolta pipetettäessä.
P.S. UTF-8 -dekoodaajaskriptin tästä saa yhtä riviä muuttamalla.
utf8e.php
<?php /* ISO-8859-1 -> UTF-8 -enkoodajaskripti. 2005 Karri "Blaze" Kahelin, http://pp.kpnet.fi/blaze/ Muokkaa, levitä ja hyödynnä vapaasti. Käyttö esim.: php utf8e.php tiedosto1 tiedosto2 tai: find alihakemisto | php utf8e.php */ if($argc >= 2) { // tiedostot annettu komentorivillä for($i = 1; $i < $argc; $i++) { enkoodaa($argv[$i]); } } else { // luetaan stdinistä $puskuri = ''; // luetaan stdinistä niin kauan, kun siellä on jotain while(!feof(STDIN)) { $puskuri .= fgets(STDIN, 4096); } // erotellaan rivit taulukoksi $filut = explode("\n", $puskuri); // enkoodataan yksi kerrallaan foreach($filut as $filu) { if($filu != '') { enkoodaa($filu); } } } function enkoodaa($filu) { // rivinvaihto lopusta pois $filu = trim($filu); echo 'Processing: ' . $filu . "\n"; // luetaan tiedosto $teksti = @file_get_contents($filu); if($teksti === false) { // ei onnistunut, todennäköisesti hakemisto echo "Error: Can't open file: $filu\n"; } else { // kirjoitetaan enkoodattu versio takaisin samaan tiedostoon $hanska = fopen($filu, 'w'); fwrite($hanska, utf8_encode($teksti)); fclose($hanska); } } ?>
Minun mielestäni saisit kuvauksen jälkikirjoituksen lisäksi myös kertoa sen, että mitä riviä pitäisi muuttaa ja millaiseksi. Itse taisin löytää, mutta joku muu ei ehkä löydä ;)
Vaikka iconv on olemassa niin tämä on ihan hyödyllinen työkaluna, kunhan sopivasti editoi vähän.
Aihe on jo aika vanha, joten et voi enää vastata siihen.