¿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.
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.
Toco reintentar y luego VLC no reconoce los subtítulos ...
Sin embargo, de las capturas de pantalla, está claro que su .srtarchivo no está codificado en Unicode.
Como resultado, iconvcambia 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:
Abra Gaupol y vaya al menú Archivo → Abrir o haga clic en el botón Abrir .
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).
Seleccione una codificación adecuada para su archivo, p. Ej. Griego ISO-8859-7 , y haga clic en el botón Aceptar .
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).
Con su archivo de subtítulos abierto en la codificación de caracteres correcta, ahora vaya al menú Archivo → Guardar 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.
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.
Á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.
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.
Instalar enca:
sudo apt-get install enca
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.
Recomiendo convertir a UTF-8, puedes hacerlo ejecutando
enconv -x utf8 <file>
o, de nuevo, si encano puede adivinar el idioma por
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)
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.
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.
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')
iconv
cambia 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.Á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.
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.Me gustaría recomendar
enca
. A diferencia de gaupol, puede manejar no solo archivos de subtítulos, sino también cualquier archivo de texto.Instalar enca:
Para descubrir la codificación del archivo, vea si enca puede adivinarlo:
o, si falla y conoce el idioma del archivo de texto, ejecute, por ejemplo
y mira lo que te da. Obtenga la lista de idiomas compatibles de
man enca
.Recomiendo convertir a UTF-8, puedes hacerlo ejecutando
o, de nuevo, si
enca
no puede adivinar el idioma porEso debería hacer el truco.
fuente
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)fuente
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.
fuente
Para traducir archivos SRT también puede usar DualSub . Es de código abierto (GPLv3) y multiplataforma. Utiliza el traductor de Google.
fuente
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.
fuente
Esta es una función de Python3 para convertir cualquier archivo de texto, incluidos los subtítulos, en archivos con codificación UTF-8.
fuente