środa, 15 listopada 2023

Zmiana polskich znaków na łacińskie w napisach (sed, enca)

W 2014 popełniłem wpis dotyczący zamiany polskich znaków w plikach tekstowych na ascii. Chodziło wówczas o to, by w razie problemów z kodowaniem plików tekstowych, odtwarzacz je wyświetlający nie "krzaczył". To jeszcze pół biedy, bo w ten sposób można byłoby się domyśleć o co chodzi, ale vlc lubi po prostu nie wyświetlać "problematycznych" linii tekstu.

Otóż poprawiłem nieco skrypt i o to rezultat:
#!/bin/bash

for f in *.srt; do

   sed 's/ą/a/g' "$f" -i;
   sed 's/ę/e/g' "$f" -i;
   sed 's/ż/z/g' "$f" -i;
   sed 's/ź/z/g' "$f" -i;
   sed 's/ł/l/g' "$f" -i;
   sed 's/ó/o/g' "$f" -i;
   sed 's/ą/a/g' "$f" -i;
   sed 's/ś/s/g' "$f" -i;
   sed 's/ć/c/g' "$f" -i;
   sed 's/ń/n/g' "$f" -i;
   sed 's/Ą/A/g' "$f" -i;
   sed 's/Ę/E/g' "$f" -i;
   sed 's/Ż/Z/g' "$f" -i;
   sed 's/Ź/Z/g' "$f" -i;
   sed 's/Ł/L/g' "$f" -i;
   sed 's/Ó/O/g' "$f" -i;
   sed 's/Ą/A/g' "$f" -i;
   sed 's/Ś/S/g' "$f" -i;

done
Lub, z wykorzystaniem enca:
#!/bin/bash
for f in *.srt; do
   enca -L polish -x utf-8 "$f"
done