Mengkompilasi semuanya. Buka dir, buat dir2utf8.sh
:
#!/bin/bash
# converting all files in a dir to utf8
for f in *
do
if test -f $f then
echo -e "\nConverting $f"
CHARSET="$(file -bi "$f"|awk -F "=" '{print $2}')"
if [ "$CHARSET" != utf-8 ]; then
iconv -f "$CHARSET" -t utf8 "$f" -o "$f"
fi
else
echo -e "\nSkipping $f - it's a regular file";
fi
done
Mungkin Anda sedang mencari enca
:
Enca adalah Penganalisis Charset yang Sangat Naif. Ini mendeteksi kumpulan karakter dan pengkodean file teks dan juga dapat mengonversinya menjadi pengkodean lain menggunakan konverter bawaan atau pustaka eksternal dan alat seperti libiconv, librecode, atau cstocs.
Saat ini mendukung bahasa Belarusia, Bulgaria, Kroasia, Ceko, Estonia, Hongaria, Latvia, Lituania, Polandia, Rusia, Slovakia, Slovenia, Ukraina, China, dan beberapa multibita secara independen pada bahasa.
Perhatikan bahwa secara umum, deteksi otomatis pengkodean saat ini adalah proses yang sulit (urutan byte yang sama dapat menjadi teks yang benar dalam banyak pengkodean). enca
menggunakan heuristik berdasarkan bahasa yang Anda perintahkan untuk dideteksi (untuk membatasi jumlah penyandian). Anda dapat menggunakan enconv
untuk mengonversi file teks menjadi penyandian tunggal.
Anda bisa mendapatkan apa yang Anda butuhkan menggunakan file utils gnu standar dan awk. Contoh:
file -bi .xsession-errors
memberi saya:"text/plain; charset=us-ascii"
jadi file -bi .xsession-errors |awk -F "=" '{print $2}'
memberi saya"us-ascii"
Saya menggunakannya dalam skrip seperti ini:
CHARSET="$(file -bi "$i"|awk -F "=" '{print $2}')"
if [ "$CHARSET" != utf-8 ]; then
iconv -f "$CHARSET" -t utf8 "$i" -o outfile
fi