Comment puis-je changer l'encodage d'un fichier de sous-titres?


14

J'ai téléchargé un sous-titre grec pour un film, et c'est ce que je vois lorsque je l'ouvre avec Gedit.

entrez la description de l'image ici

Les sous-titres fonctionnent très bien sur VLC, tous parfaits. Mais que faire si je veux éditer ce sous-titre avec des mots grecs? Je reçois instantanément une erreur sur le codage des caractères.

entrez la description de l'image ici

J'ai appuyé sur réessayer, puis VLC ne reconnaît pas les sous-titres ...

Réponses:


16

Pour l'édition / la traduction des sous-titres (c'est-à-dire les sous-titres textuels), je suggère fortement Gaupol .

sudo apt-get install gaupol

En plus de gaupol, vous pouvez également essayer l' éditeur de sous-titres et les sous-titres de Gnome .

Cependant, à partir des captures d'écran, il est clair que votre .srtfichier n'est pas codé en Unicode.

En fin de compte, iconv change l'encodage du fichier en UTF-8, mais le fichier converti aura toujours les mêmes caractères que vous voyez lors de l'ouverture dans Gedit.

La solution que j'ai trouvée est la suivante:

  1. Ouvrez Gaupol et allez dans le menu FichierOuvrir ou cliquez sur le bouton Ouvrir .
  2. Il y a un menu de sélection dans la partie inférieure de la fenêtre ouverte, intitulé Encodage des caractères . Cliquez sur Autre ... (dernière option).

    Option d'encodage de caractères dans la fenêtre ouverte de Gaupol

  3. Sélectionnez un encodage approprié pour votre fichier, par exemple grec ISO-8859-7 , et cliquez sur le bouton Accepter .

    afficher la boîte de dialogue d'encodage des caractères

  4. Ouvrez maintenant votre .srtfichier et assurez-vous que tous les caractères sont correctement rendus. Sinon, répétez la procédure ci-dessus avec un autre encodage. Vous pouvez exécuter la commande file -bi yourfile.srtpour déterminer l'encodage correct de votre fichier (même si j'ai lu que les résultats ne sont pas nécessairement exacts).

  5. Avec votre fichier de sous-titres ouvert dans l'encodage de caractères correct, allez maintenant dans le menu FichierEnregistrer sous ... et changez l'option d'encodage de caractères (encore une fois, en bas de la fenêtre) en UTF-8 et enregistrez le fichier (éventuellement avec un nouveau nom, par sécurité).

Cette même procédure d'ajout de la page de code fonctionnera pour Gedit . Pourtant, je laisse les instructions pour Gaupol car cette question concerne les fichiers de sous-titres.

Bonne chance.


J'ai déjà gaupol, et il montre les mots comme mes captures d'écran avant (en lettres illisibles). Et comme je l'ai déjà dit, si je définis UTF-8 comme le nouvel encodage, VLC ne reconnaît pas les sous-titres ..
Leon Vitanos

vous devrez changer l'encodage avant de pouvoir éditer et vous raser en utf-8
carnendil

Pourriez-vous être un peu plus précis? Yoy signifie changer l'encodage via enregistrer sous? U signifie changer le codage via le terminal avec "iconv"? Les deux ont essayé, VLC ne reconnaîtra pas le sous-titre après cela
Leon Vitanos

Je suis désolé, j'ai dû me procurer des sous-titres en grec pour vérifier. En effet, iconvle codage des caractères change, mais le programme ne remplacera pas les caractères qui sont affichés lors de l'ouverture en UTF-8. Veuillez vérifier ma réponse mise à jour. À votre santé.
carnendil

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

Ouvrez-les à partir de l'éditeur Kate, vous pouvez voir le texte approprié, si vous devez toujours les ouvrir à partir de Gedit, en d'autres termes, changez définitivement la codification exécutez la commande de terminal ci-dessus.


iconv, pour ce que j'ai pu expérimenter, changera l'encodage du fichier, mais ne remplacera aucun des contenus, c'est-à-dire que seuls les caractères qui coïncident entre les encodages source et cible s'afficheront correctement, tous les autres s'afficheront selon comment l'encodage cible les comprend. Voir ma réponse et leurs commentaires.
carnendil

merci @carnendil ce que j'ai dit c'est que cela change la codification parce que je suis aussi grec (anglais pas langue maternelle), évidemment je voulais dire encodage et seulement dans le fichier de sortie l'entrée se trouve toujours dans le répertoire, mais pouvez-vous avoir la gentillesse de l'implémenter dans un script bash? dois-je choisir la boucle "for do. iconv ... done"?
billybadass

ce genre de réponse, notez qu'il faut encore changer l'encodage en utf-8 depuis les préférences du lecteur vidéo #! / bin / bash pour le fichier dans * .srt do iconv -f ISO-8859-7 -t UTF-8 -o "$ file.new" "$ file" && mv -f "$ file.new" "$ file" fait
billybadass

3

Je recommanderais enca. Contrairement à gaupol, vous pouvez gérer non seulement les fichiers de sous-titres, mais tout fichier texte.

  1. Installez enca:

    sudo apt-get install enca
    
  2. Pour comprendre l'encodage du fichier, voyez si enca peut le deviner:

    enca <file>
    

    ou, s'il échoue et que vous connaissez la langue du fichier texte, exécutez par exemple

    enca -L ru <file>
    

    et voyez ce que ça vous donne. Obtenez la liste des langues prises en charge sur man enca.

  3. Je recommanderais de convertir en UTF-8, vous pouvez le faire en exécutant

    enconv -x utf8 <file>
    

    ou, encore une fois, si encane peut pas deviner la langue par

    enconv -L ru -x utf8 <file>
    

    Cela devrait faire l'affaire.


1

Le problème est que Gedit (et de nombreuses autres applications Linux) ne reconnaissent pas correctement l'encodage du texte. VLC, d'autre part, est très probablement configuré pour le reconnaître correctement (via l'onglet "Préférences de sous-titre"), et c'est pourquoi vous n'y avez aucun problème. La solution est simple:

Vous n'ouvrez pas le fichier en double-cliquant dessus, mais via la boîte de dialogue "Ouvrir" de Gedit . Là, vous pouvez trouver en bas à gauche un drop-down for Encoding, dans lequel "Détecté automatiquement" est sélectionné par défaut. Réglez-le sur "Windows-1253" ou "ISO-8859-7" et vous êtes prêt à partir, le fichier s'ouvre correctement (et vous pouvez ensuite l'enregistrer sur UTF-8 pour éviter de futurs problèmes)


0

Un autre éditeur de sous-titres qui permet de convertir en différents formats (et est livré avec des tonnes de fonctionnalités) est Aegisub . Son format natif (.ass) est pris en charge par VLC Media Player ainsi que MPlayer et sa conversion devrait résoudre les problèmes d'encodage.


0

Pour traduire des fichiers SRT, vous pouvez également utiliser DualSub . Il est open-source (GPLv3) et multiplateforme. Il utilise Google Translator.


0

Pour vos informations générales, maintenant il y a subtitle-index.org , il concentre beaucoup de sous-titres, les classe selon plusieurs critères (durée, vérification orthographique, lisibilité, encodage), et propose le meilleur en téléchargement direct en UTF-8.

Fonctionnant assez bien, il évite les problèmes d'encodage qui sont assez communs et ennuyeux.


0

Il s'agit d'une fonction Python3 pour convertir tous les fichiers texte, y compris les sous-titres, en fichiers avec codage 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')
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.