rad blog programowanie, majsterkowanie, życie

Jak zmienić kodowanie pliku tekstowego

J

Pisałem już o tym Jak sprawdzić kodowanie pliku tekstowego, dziś będzie o tym jak zmienić kodowanie pliku tekstowego. W przypadku środowiska graficznego wystarczy otworzyć plik w dobrym edytorze tekstu i podczas zapisywania wybrać interesujące nas kodowanie. Jeśli jednak chcemy zmienić kodowanie znaków z wiersza poleceń, aby np. wykorzystać to w skrypcie powłoki, możemy posłużyć się jednym z poniższych programów.

Linux:

iconv -f UTF-8 -t CP1250 foobar_utf8.txt > foobar_cp1250.txt

Program iconv przekonwertuje nam plik foobar_utf8.txt zapisany w kodowaniu UTF-8 na CP1250 i zapisze dane w pliku foobar_cp1250.txt. Kodowanie znaków pliku wejściowego możemy zdobyć np. dzięki programowi enca z parametrem -i, który zwróci nam kodowanie w odpowiednim formacie.

przykład:

rad@linux:~$ enca -i foo.txt # sprawdza kodowanie
UTF-8
rad@linux:~$ iconv -f UTF-8 -t ISO-8859-2 foo.txt > bar.txt
rad@linux:~$ enca -i bar.txt
ISO-8859-2

Jeśli dokonujemy zmiany kodowania na format w którym niektóre znaki nie będą mogły zostać zapisane, program zwróci nam błąd. Należy dodać wtedy parametr -c który sprawi, że program będzie pomijał kłopotliwe znaki.

przykład:

rad@linux:~$ iconv -f ISO-8859-2 -t ASCII bar.txt > baz.txt
iconv: illegal input sequence at position 30
rad@linux:~$ iconv -c -f ISO-8859-2 -t ASCII bar.txt > baz.txt
rad@linux:~$ enca -i baz.txt
ASCII

Jeśli z jakichś powodów program ten nam nie odpowiada zawsze możemy skorzystać z innego np. recode czy enca (z odpowiednimi parametrami). A jeśli chcemy zmienić kodowanie nazwy pliku/plików wcale nie musimy pisać specjalnego skryptu z użyciem powyższych narzędzi, wystarczy convmv 😉

1 comment

rad blog programowanie, majsterkowanie, życie

Kategorie