Konwersja znaków w plikach txt z Windows na UTF-8 ( OS X / Linux )

Jeśli mamy jakieś stare pliki tekstowe zapisane w „windowsowym” edytorze to może się okazać, że są to pliki zapisane jeszcze w starym systemie kodowania znaków. Aktualnie standardem kodowania znaków jest UTF-8, jednak może się zdarzyć, że twoje stare pliki zostały zapisane w formacie CP1250 lub ISO 8859-2 ( ISO Latin 2 ). Tak więc otwarcie takiego pliku na współczesnych systemach operacyjnych z rodziny OSX / Linux / Unix spowoduje iż na ekranie zobaczymy sporo tzw. krzaczków – gdyż domyślnie taki plik będzie odczytany w standardzie UTF-8.

Na szczęście rozwiązanie jest dość proste. Użytkownicy OS X a także systemów z rodziny Linux / Unix mają już najczęściej w systemie dołączony program konsolowy do konwersji znaków. Tym programem jest: iconv
Wystarczy uruchomić konsolę ( terminal ) i uruchomić program z odpowiednimi parametrami.

Konwersja z CP1250 na UTF-8

cat nazwa_pliku.txt | iconv -f cp1250 -t utf-8 | tee nazwa_pliku.txt

Połączenie 3 powyższych programików spowoduje przekonwertowanie znaków z cp1250 na utf-8 i nadpisanie pliku.

Jeśli chcemy mieć kopie oryginału:

cat nazwa_pliku.txt | iconv -f cp1250 -t utf-8 > kopia_pliku.txt

Hurtowa konwersja wielu plików

Operacja ogranicza się do wykorzystania pętli for in interpretera Bash i wpisaniu wspomnianych wcześniej listy poleceń dotyczących konwersji wraz z nadpisaniem oryginalnych plików.
Wchodzimy do katalogu, gdzie znajdują się pliki i wpisujemy poniższy kod ( W JEDNEJ LINII ! ):

for FILENAME in ./*; do cat $FILENAME | iconv -f cp1250 -t utf-8 | tee $FILENAME; done; 

W ten sposób mamy przetworzone hurtowo wszystkie pliki z katalogu w którym wpisaliśmy powyższy kod.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *


− 5 = trzy

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre user="" computer="" escaped="">