¿Cómo puedo cambiar la codificación de un archivo de subtítulos?

14

Descargué un subtítulo griego para una película, y esto es lo que veo cuando lo abro con Gedit.

ingrese la descripción de la imagen aquí

El subtítulo funciona muy bien en VLC, todo perfecto. Pero, ¿qué pasa si quiero editar este subtítulo con algunas palabras griegas? Al instante recibo un error sobre la codificación de caracteres.

ingrese la descripción de la imagen aquí

Toco reintentar y luego VLC no reconoce los subtítulos ...

Leon Vitanos
fuente

Respuestas:

16

Para la edición / traducción de subtítulos (es decir, subtítulos basados ​​en texto), sugiero encarecidamente Gaupol .

sudo apt-get install gaupol

Además de gaupol, también puedes probar Subtitle Editor y Gnome Subtitles .

Sin embargo, de las capturas de pantalla, está claro que su .srtarchivo no está codificado en Unicode.

Como resultado, iconv cambia la codificación del archivo a UTF-8, pero el archivo convertido seguirá teniendo los mismos caracteres que ve al abrir en Gedit.

La solución que encontré es esta:

  1. Abra Gaupol y vaya al menú ArchivoAbrir o haga clic en el botón Abrir .
  2. Hay un menú de selección en la parte inferior de la ventana abierta, titulado Codificación de caracteres . Haga clic en Otro ... (última opción).

    Opción de codificación de caracteres en la ventana abierta de Gaupol

  3. Seleccione una codificación adecuada para su archivo, p. Ej. Griego ISO-8859-7 , y haga clic en el botón Aceptar .

    Mostrar cuadro de diálogo de codificación de caracteres

  4. Ahora abra su .srtarchivo y asegúrese de que todos los caracteres se representan correctamente. De lo contrario, repita el procedimiento anterior con otra codificación. Puede ejecutar el comando file -bi yourfile.srtpara determinar la codificación correcta de su archivo (aunque he leído que los resultados no son necesariamente exactos).

  5. Con su archivo de subtítulos abierto en la codificación de caracteres correcta, ahora vaya al menú ArchivoGuardar como ... y cambie la opción de codificación de caracteres (nuevamente, en la parte inferior de la ventana) a UTF-8 y guarde el archivo (posiblemente con un nuevo nombre, por seguridad).

Este mismo procedimiento de agregar la página de códigos funcionará para Gedit . Sin embargo, dejo las instrucciones para Gaupol ya que esta pregunta es sobre archivos de subtítulos.

Buena suerte.

carnendil
fuente
Ya tengo gaupol, y muestra las palabras como mis capturas de pantalla antes (en letras ilegibles). Y como dije antes, si configuro UTF-8 como la nueva codificación, VLC no reconoce los subtítulos ..
Leon Vitanos
tendrá que cambiar la codificación antes de poder editar y afeitarse como utf-8
carnendil
¿Podrías ser un poco más específico? ¿Significa cambiar la codificación a través de guardar como? U significa cambiar codificación a través de terminal con "iconv"? Ambos intentaron, VLC no reconocerá el subtítulo después de eso
Leon Vitanos
Lo siento, tuve que conseguir algunos subtítulos en griego para poder verificar. De hecho, iconvcambia la codificación de caracteres, pero el programa no sustituirá los caracteres que se muestran cuando se abre como UTF-8. Por favor revise mi respuesta actualizada. Salud.
carnendil
4
iconv -f ISO-8859-7 -t UTF-8  Input_file.srt   > Output_file.srt  

Ábralos desde el editor de Kate, puede ver el texto adecuado, si aún necesita abrirlos desde Gedit, en otras palabras, cambie permanentemente la codificación ejecute el comando de terminal anterior.

billybadass
fuente
iconv, por lo que pude experimentar, cambiará la codificación del archivo, pero no sustituirá ninguno de los contenidos, es decir, solo los caracteres que coinciden entre las codificaciones de origen y destino se representarán correctamente, todos los demás se procesarán de acuerdo con cómo los entiende la codificación de destino. Vea mi respuesta y sus comentarios.
carnendil
Gracias a @carnendil, lo que dije fue que cambia la codificación porque también soy griego (inglés, no idioma materno), obviamente me refería a la codificación y solo en el archivo de salida la entrada todavía se encuentra en el directorio, pero ¿puede ser lo suficientemente amable para implementarlo en un script bash? ¿Debo ir al bucle "for do. iconv ... done"?
billybadass
ese tipo de respuesta, tenga en cuenta que todavía tiene que cambiar la codificación a utf-8 desde las preferencias del reproductor de video #! / bin / bash para el archivo en * .srt do iconv -f ISO-8859-7 -t UTF-8 -o "$ file.new" "$ file" && mv -f "$ file.new" "$ file" hecho
billybadass
3

Me gustaría recomendar enca. A diferencia de gaupol, puede manejar no solo archivos de subtítulos, sino también cualquier archivo de texto.

  1. Instalar enca:

    sudo apt-get install enca
    
  2. Para descubrir la codificación del archivo, vea si enca puede adivinarlo:

    enca <file>
    

    o, si falla y conoce el idioma del archivo de texto, ejecute, por ejemplo

    enca -L ru <file>
    

    y mira lo que te da. Obtenga la lista de idiomas compatibles de man enca.

  3. Recomiendo convertir a UTF-8, puedes hacerlo ejecutando

    enconv -x utf8 <file>
    

    o, de nuevo, si encano puede adivinar el idioma por

    enconv -L ru -x utf8 <file>
    

    Eso debería hacer el truco.

Stan
fuente
1

El problema es que Gedit (y muchas otras aplicaciones de Linux) no reconocen correctamente la codificación del texto. VLC, por otro lado, probablemente esté configurado para reconocerlo correctamente (a través de la pestaña "Preferencias de subtítulos"), y es por eso que no tiene ningún problema allí. La solución es simple:

No abre el archivo haciendo doble clic en él, sino a través del cuadro de diálogo "Abrir" de Gedit . Allí, puede encontrar en la parte inferior izquierda a drop-down for Encoding, en la que se selecciona "Detectado automáticamente" de forma predeterminada. Configúrelo en "Windows-1253" o "ISO-8859-7" y listo, el archivo se abre correctamente (y luego puede guardarlo en UTF-8 para evitar problemas futuros)

Giorgos_tph
fuente
0

Otro editor de subtítulos que permite la conversión a diferentes formatos (y viene con toneladas de características) es Aegisub . Su formato nativo (.ass) es compatible con VLC Media Player y MPlayer, y la conversión a este debería solucionar los problemas de codificación.

LiveWireBT
fuente
0

Para traducir archivos SRT también puede usar DualSub . Es de código abierto (GPLv3) y multiplataforma. Utiliza el traductor de Google.

Boni García
fuente
0

Para su información general, ahora hay subtitle-index.org , concentra muchos subtítulos, los clasifica según múltiples criterios (duración, corrección ortográfica, lisibilidad, codificación) y ofrece el mejor en descarga directa como UTF-8.

Al funcionar bastante bien, evita problemas de codificación que son bastante comunes y molestos.

Lulú
fuente
0

Esta es una función de Python3 para convertir cualquier archivo de texto, incluidos los subtítulos, en archivos con codificación UTF-8.

def correctSubtitleEncoding(filename, newFilename, encoding_from='ISO-8859-7', encoding_to='UTF-8'):
    with open(filename, 'r', encoding=encoding_from) as fr:
        with open(newFilename, 'w', encoding=encoding_to) as fw:
            for line in fr:
                fw.write(line[:-1]+'\r\n')
Mojtaba Khodadadi
fuente