Come posso modificare la codifica di un file di sottotitoli?


14

Ho scaricato un sottotitolo greco per un film, ed è quello che vedo quando lo apro con Gedit.

inserisci qui la descrizione dell'immagine

I sottotitoli funzionano alla grande su VLC, tutto perfetto. E se volessi modificare questo sottotitolo con alcune parole greche? Ricevo immediatamente un errore sulla codifica dei caratteri.

inserisci qui la descrizione dell'immagine

Ho provato a riprovare e quindi VLC non riconosce i sottotitoli ...

Risposte:


16

Per la versione / traduzione dei sottotitoli (sottotitoli testuali, cioè), consiglio vivamente Gaupol .

sudo apt-get install gaupol

Oltre a gaupol, puoi anche provare Sottotitoli Editor e Sottotitoli Gnome .

Tuttavia, dagli screenshot, è chiaro che il tuo .srtfile non è codificato in Unicode.

A quanto pare, iconv cambia la codifica del file in UTF-8, ma il file convertito avrà ancora gli stessi caratteri che vedi quando si apre in Gedit.

La soluzione che ho trovato è questa:

  1. Apri Gaupol e vai al menu FileApri o fai clic sul pulsante Apri .
  2. C'è un menu di selezione nella parte inferiore della finestra aperta, intitolato Codifica caratteri . Fai clic su Altro ... (ultima opzione).

    Opzione di codifica dei caratteri nella finestra aperta di Gaupol

  3. Seleziona una codifica appropriata per il tuo file, ad esempio greco ISO-8859-7 , e fai clic sul pulsante Accetta .

    mostra la finestra di dialogo di codifica dei caratteri

  4. Ora apri il tuo .srtfile e assicurati che tutti i caratteri siano visualizzati correttamente. Altrimenti, ripetere la procedura sopra con un'altra codifica. È possibile eseguire il comando file -bi yourfile.srtper determinare la codifica corretta del file (anche se ho letto i risultati non sono necessariamente esatti).

  5. Con il file dei sottotitoli aperto nella codifica dei caratteri corretta, ora vai al menu FileSalva con nome ... e modifica l'opzione di codifica dei caratteri (di nuovo, nella parte inferiore della finestra) in UTF-8 e salva il file (possibilmente con un nuovo nome, per sicurezza).

La stessa procedura di aggiunta della tabella codici funzionerà per Gedit . Tuttavia lascio le istruzioni per Gaupol poiché questa domanda riguarda i file dei sottotitoli.

In bocca al lupo.


Ho già gaupol, e mostra le parole come i miei screenshot prima (in lettere illeggibili). E come ho detto prima, se ho impostato UTF-8 come nuova codifica, VLC non riconosce i sottotitoli ..
Leon Vitanos

dovrai modificare la codifica prima di poter modificare e radere come utf-8
carnendil

Potresti essere un po 'più specifico? Vuoi dire cambiare codifica tramite Salva come? U significa cambiare codifica tramite terminale con "iconv"? Entrambi tentati, VLC non riconoscerà il sottotitolo dopo quello
Leon Vitanos

Mi dispiace, ho dovuto procurarmi dei sottotitoli in lingua greca per verificare. In effetti, iconvla codifica dei caratteri cambia, ma il programma non sostituirà i caratteri mostrati quando vengono aperti come UTF-8. Si prega di controllare la mia risposta aggiornata. Saluti.
carnendil,

4
iconv -f ISO-8859-7 -t UTF-8  Input_file.srt   > Output_file.srt  

Aprendoli dall'editor di Kate puoi vedere il testo corretto, se hai ancora bisogno di aprirli da Gedit, in altre parole, modificare permanentemente la codificazione esegui il comando terminale sopra.


iconv, per quello che sono stato in grado di sperimentare, cambierà la codifica del file, ma non sostituirà nessuno dei contenuti, cioè solo i caratteri che coincidono tra la codifica sorgente e di destinazione verranno visualizzati correttamente, tutti gli altri renderizzeranno secondo come la codifica target li capisce. Vedi la mia risposta e i loro commenti.
carnendil,

Grazie a @carnendil quello che ho detto è che cambia la codificazione perché sono anche greco (inglese non madre lingua), ovviamente intendevo codificare e solo nel file di output l'input si trova ancora nella directory, ma puoi essere abbastanza gentile da implementarlo in uno script bash? dovrei andare per il ciclo "for do. iconv ... done"?
Billybadass,

quel tipo di risposta, nota che devi ancora cambiare la codifica in utf-8 dalle preferenze del lettore video #! / bin / bash per il file in * .srt do iconv -f ISO-8859-7 -t UTF-8 -o "$ file.new" "$ file" && mv -f "$ file.new" "$ file" fatto
billybadass il

3

Lo consiglierei enca. A differenza di gaupol, puoi gestire non solo file di sottotitoli, ma qualsiasi file di testo.

  1. Installa enca:

    sudo apt-get install enca
    
  2. Per capire la codifica del file, vedi se enca può indovinarlo:

    enca <file>
    

    oppure, se fallisce e conosci la lingua del file di testo, esegui ad esempio

    enca -L ru <file>
    

    e vedi cosa ti dà. Ottieni l'elenco delle lingue supportate da man enca.

  3. Consiglierei di convertire in UTF-8, puoi farlo eseguendo

    enconv -x utf8 <file>
    

    o, ancora, se encanon riesco a indovinare la lingua di

    enconv -L ru -x utf8 <file>
    

    quello dovrebbe fare il trucco.


1

Il problema è che Gedit (e molte altre app di Linux) non riconoscono correttamente la codifica del testo. D'altra parte VLC è probabilmente impostato per riconoscerlo correttamente (tramite la scheda "Preferenze sottotitoli"), ed è per questo che non hai alcun problema lì. La soluzione è semplice:

Non si apre il file facendo doppio clic su di esso, ma tramite la finestra di dialogo "Apri" di Gedit . Qui puoi trovare nella parte in basso a sinistra drop-down for Encoding, in cui è selezionato "Rilevato automaticamente" per impostazione predefinita. Impostalo su "Windows-1253" o "ISO-8859-7" e sei a posto, il file si apre correttamente (e puoi quindi salvarlo su UTF-8 per evitare problemi futuri)


0

Un altro editor di sottotitoli che consente la conversione in diversi formati (e viene fornito con tonnellate di funzionalità) è Aegisub . Il suo formato nativo (.ass) è supportato da VLC Media Player e MPlayer e la conversione ad esso dovrebbe risolvere i problemi di codifica.


0

Per tradurre i file SRT puoi anche usare DualSub . È open-source (GPLv3) e multipiattaforma. Utilizza Google Translator.


0

Per le tue informazioni generali, ora c'è sottotitolo-index.org , concentra molti sottotitoli, li classifica in base a più criteri (durata, controllo ortografico, lisibilità, codifica) e offre il migliore in download diretto come UTF-8.

Funzionando abbastanza bene, evita problemi di codifica che sono piuttosto comuni e fastidiosi.


0

Questa è una funzione Python3 per convertire qualsiasi file di testo inclusi i sottotitoli in quelli con codifica 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')
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.