Zeichensatz einer .srt-Datei erkennen und nach UTF-8 konvertieren

Heute bin ich einer .srt Untertitel-Datei eines Films aus Asien über den Weg gelaufen, welche in VLC nur Zeichensalat anzeigte:

Ziel war es, diese Untertitel-Datei mit iconv in UTF-8 zu konvertieren. Doch bevor ich damit beginnen konnte, musste ich herausfinden, wie der Ursprungszeichensatz hiess.

Glücklicherweise existiert genau für solche Fragestellungen ein Python-Modul, welches einem das Rätselraten abnimmt. Das Modul heisst chardet, welches ich kurzerhand mittels MacPorts installierte:

# port install py27-chardet

Auf Grund einer Unterlassung früherer Tage musste ich einmalig noch das Python auswählen, welches auf der Kommandozeile standardmässig ausgeführt wird:

# port select --set python python27

Via: ImportError: No module named gnuradio

Anschliessend konnte ich die Untertitel von Python parsen lassen:

$ python -c 'import chardet,sys; print chardet.detect(sys.stdin.read())' < Sugihara\ Chiune.srt
{'confidence': 0.99, 'encoding': 'SHIFT_JIS'}

Via: How to auto detect text file encoding?

Bewaffnet mit dieser Information konnte ich nun iconv zu Hilfe ziehen:

$ iconv -f SHIFT-JIS -t UTF-8 Sugihara\ Chiune.srt > Sugihara\ Chiune.UTF-8.srt

Quelle: Japanese Encoding Conversion

Das Resultat sah nun so aus: