Cambiar la codificación de archivos srt

Por estos días he estado subtitulando algunas películas que venían en versión original, y me encontré con un curioso problema. Muchos de los archivos de subtítulos (srt) venían en una codificación (8859-1) no soportada (o al menos no listada) por la versión de VLC que uso, con lo que los diálogos se llenaban de caracteres extraños. Una vez más, a investigar.

Como sabrán, existen varias maneras de codificar archivos de texto, para poder mostrar los distintos caracteres y símbolos propios de cada idioma. Lo normal es que, para evitar confusiones, se usen formatos como UTF-8 o UTF-16, además del popular Windows-1252. Sin embargo, el uso del estándar 8859-1 está bastante extendido y estos formatos (por lo que he descubierto) no son del todo compatibles entre si, lo cual plantea un problema si el software que usamos no puede configurarse para leer el formato que tenemos a mano.

Sin embargo, hay una manera fácil de solucionarlo, usando un par de comandos en la Terminal. Consiste en emplear una utilidad denominada “iconv” que hace precisamente lo que necesitamos: convertir de un juego de caracteres a otro. Está incluida por defecto en muchas distribuciones de Linux y, como no, en Mac OS X.

Lo primero es saber en qué juego de caracteres está el archivo que queremos convertir. Para saberlo, empleamos otro comando llamado “file” (también presente en Linux y Mac OS X), que nos permite saber qué tipo de archivo es aquel que queremos transformar. Para ello, abrimos la consola de comandos (Terminal) y empleamos la siguiente sintaxis:

file –mime-encoding nombrearchivo.txt

Al oprimir la tecla Enter, nos mostrará la codificación.

Una vez que tenemos el código original, procedemos a convertirlo empleando la utilidad iconv, de esta manera:

iconv –from-code=iso-8859-1 –to-code=utf-8 archivooriginal.txt > archivoconvertido.txt.utf8

Al oprimir Enter, se realizará la conversión. En este caso, el juego de caracteres inicial es 8859-1 y queremos transformarlo a UTF-8. Las extensiones pueden ser de cualquier tipo, tales como txt, srt, etc. Sin embargo, hay que verificar que los nombres original y final tengan menos de 7 caracteres antes de la extensión, ya que si son más largos o tienen espacios, no funcionará. En el ejemplo, he añadido .utf8 al final para diferenciarlo del archivo original.

Y con esto podremos disfrutar de los subtítulos sin errores ni caracteres extraños!

10 comentarios

  1. esta incompleto.. puse file -mime-encoding subs.srt

    y nada. obviamente no puse el directorio, no se usar el terminal, pero podrian haber puesto como hacerlo para gente que nunca lo uso.

  2. MacBook-Pro-de-Joaquin-:~ joaquin$ file –mime-encoding subs.txt
    –mime-encoding: cannot open `–mime-encoding’ (No such file or directory)
    subs.txt: cannot open `subs.txt’ (No such file or directory)

    el archivo estaba en el escritorio

    1. Joaquin,

      Es importante que, antes de usar los comandos de la guía, te ubiques en el lugar donde se encuentran los archivos. Para ello, hay que havegar desde donde te encuentres con el comando “cd” (sin las comillas), para ir cambiando de directorios hasta llegar al escritorio (desktop) y poder ejecutar los comandos correctamente.

      Saludos!

  3. Ok joaquin pon atención te dire exactamente lo q’ tienes q’ hacer pero antes asegurate de tener el archivo srt en el escritorio, ingresa a la terminal y te saldra esto:

    MacBook-Pro-de-Joaquin-:~ joaquin$

    le agregas “ls” sin las comillas, te tiene q’ quedar asi

    MacBook-Pro-de-Joaquin-:~ joaquin$ ls

    le das enter y te aparecera esto

    Applications Documents Library Music Public
    Desktop Downloads Movies Pictures

    MacBook-Pro-de-Joaquin-:~ joaquin$

    escribes “cd desktop” sin las comillas, te tiene q’quedar asi

    MacBook-Pro-de-Joaquin-:~ joaquin$ cd desktop

    vuelves a colocar “ls” te tiene que quedar asi

    MacBook-Pro-de-Joaquin-:~ joaquin$ ls

    con esto aparecera todo lo q’ tengas en el escritorio
    incluido el archivo srt y es ahora cuando ingresas el comando

    file –mime-encoding nombrearchivo.txt

    en tu caso en particular tiene q’ quedarte asi

    MacBook-Pro-de-Joaquin-:~ joaquin$ file –mime-encoding subs.srt

    y eso es todo, espero te sirva a tí y a muchos mas esta ayuda

  4. Brian, entendi muy bien todo pero no me sale…

    iMac-de-Daniel-Guarin:desktop DaniGuarin$ file –mime-encoding Tommy.srt–mime-encoding: cannot open `–mime-encoding’ (No such file or directory)
    Tommy.srt: Non-ISO extended-ASCII text, with CRLF line terminators.

    1. Amigos el comando es “file –mime-encoding” son — dos guiones despues de file si no sale error, tambien para el otro comando iconv –from-code=iso-8859-1 –to-code=utf-8 algo tarde la respuesta pero por si alguien lo ve no le resulte ese error

  5. Muchas gracias por la información combinada de Álvaro, Brian e Ivan.
    Funcionó perfecto. Había buscado bastante sin poderlo resolver, se agradece mucho que compartáis vuestros conocimientos y nos ayudéis a resolver problemas!

  6. Muchas gracias, a Álvaro por el código e a Iván por la acotación de los dos guiones. Me funcionó perfecto.

Los comentarios están desactivados.