Retirer le BOM des sous-titres
Ou collez le texte d'un sous-titre
Options
Une BOM est constituée de trois octets au tout début du fichier qui indiquent son encodage. Elle est invisible dans tous les éditeurs et lecteurs, n'occupe aucune place à l'écran, et rien dans les sous-titres ne change quand on l'ajoute ou qu'on la retire. Deux sortes d'outils s'y intéressent : les programmes Windows qui écrivent des sous-titres, qui en mettent une par défaut, et les analyseurs stricts des chaînes de compilation, qui rejettent un fichier commençant par une BOM. Cette page ouvre le cadre dans l'état que son titre nomme, pour que vous puissiez l'inverser si votre fichier s'avère être dans l'autre cas. Un fichier en UTF-16 porte toujours une BOM, car c'est ainsi qu'un lecteur sait lequel des deux ordres d'octets il lit — demander sa suppression dans ce cas la laisse en place.
La fréquence d'images dans laquelle les temps sont comptés. Sur les pages de format, c'est ce dont MicroDVD a besoin, car il stocke les temps sous forme de numéros d'image. Sur les pages de fréquence d'images, c'est la cadence à laquelle le fichier a été minuté — la version pour laquelle les sous-titres ont été faits — et le second cadre de la page prend la cadence de la vidéo avec laquelle vous allez les utiliser. 23,976, 24, 25, 29,97, 30, 50, 59,94 et 60 sont les valeurs courantes. Se tromper décale toute la chronologie et, sur les pages de fréquence d'images, ce décalage est un rapport, pas un montant fixe.
Cette page retire la marque UTF-8 — le BOM, caractère U+FEFF, trois octets EF BB BF — du début d’un fichier de sous-titres. La marque ne s’affiche pas, mais elle est là, et certains analyseurs stricts, certains scripts de construction et certains outils de comparaison lisent les premiers octets du fichier plutôt que ses blocs. Un fichier qui commence par une marque invisible peut donc être refusé sans que rien ne le laisse voir.
Le retrait est le geste entier, et la page le fait sans rien d’autre. Les fins de ligne restent celles du fichier — un fichier Windows garde ses CRLF —, l’encodage n’est pas modifié, les timecodes, les numéros et l’ordre des blocs sont intacts. C’est volontairement une opération plus petite qu’une normalisation : une page qui profiterait du passage pour tout remettre en ordre changerait des fichiers que personne n’a demandé à changer.
Un fichier sans marque revient octet pour octet, y compris dans son absence de marque. C’est le cas qui distingue une vraie page d’un nettoyeur approximatif : écrire une marque puis la retirer, ou réécrire le fichier au passage, donnerait un fichier différent de l’entrée alors qu’il n’y avait rien à faire. La réponse honnête à « il n’y avait rien à retirer » est le fichier tel qu’il est arrivé.
Rien n’est envoyé. Les douze formats sont reconnus à leur contenu. Un fichier UTF-16 porte lui aussi une marque, mais celle-ci indique l’ordre des octets et lui est nécessaire : cette page ne la retire pas, car le fichier deviendrait illisible. Pour retirer un BOM sans toucher au reste, c’est bien cette page ; pour l’ajouter, il y en a une autre.
Exemples
Un fichier marqué, la marque retirée
Entrée
1
00:00:01,000 --> 00:00:02,000
The room is dark.
Sortie
1
00:00:01,000 --> 00:00:02,000
The room is dark.
L’entrée commence par U+FEFF et la sortie non : les deux fichiers diffèrent par ce seul caractère, ce qui est toute l’opération. Un fichier dans cet état vient souvent d’un programme de sous-titrage Windows ; la raison de vouloir la marque en moins est une étape de construction ou un analyseur strict qui regarde les premiers octets au lieu des blocs. La taille du fichier diminue de trois octets.
Un fichier Windows, marque retirée et retours chariot conservés
Entrée
1
00:00:01,000 --> 00:00:02,000
Marked and Windows.
Sortie
1
00:00:01,000 --> 00:00:02,000
Marked and Windows.
Seule la marque part. Chaque retour chariot appartient au fichier et cette page n’a aucun avis sur eux : quelqu’un qui veut changer les deux veut la page des fins de ligne, et garder les deux opérations séparées est ce qui rend chacune sûre sur un fichier qu’on n’a pas ouvert. La sortie conserve donc ses CRLF exactement comme l’entrée.
Un fichier sans marque, rendu octet pour octet
Entrée
1
00:00:01,000 --> 00:00:02,000
The room is dark.
Sortie
1
00:00:01,000 --> 00:00:02,000
The room is dark.
Il n’y avait rien à retirer, donc le fichier revient inchangé, y compris dans son absence de marque. C’est le cas qui piège une implémentation qui écrit une marque d’abord et la retire ensuite, ou qui normalise le fichier au passage : la lecture honnête de « il n’y avait rien à faire » est l’entrée elle-même, octet pour octet, et non une version plus propre.
Questions fréquentes
Qu’est-ce qu’un BOM et pourquoi le retirer d’un fichier de sous-titres ?
C’est le caractère U+FEFF, écrit EF BB BF en UTF-8, placé devant le texte pour signaler l’encodage. Il ne s’affiche pas, mais il fait partie du fichier : un analyseur strict, un script qui lit les premiers octets ou un outil de comparaison peut le voir et refuser le fichier ou le considérer comme différent. Le retirer rend le fichier plus simple à traiter en aval sans changer une seule lettre du texte.
La page modifie-t-elle les fins de ligne en même temps ?
Non. Retirer la marque et convertir les fins de ligne sont deux opérations distinctes, avec deux pages distinctes. Un fichier Windows qui perd son BOM garde tous ses CRLF, et un fichier Unix qui en gagne un garde ses LF. Cette séparation évite qu’un fichier soit reformaté sans que personne l’ait demandé, ce qui est le genre de changement qu’on ne remarque qu’au moment où un outil en aval s’en plaint.
Que se passe-t-il si le fichier n’a pas de BOM ?
Le fichier revient identique octet pour octet. La page ne fabrique pas une marque pour avoir quelque chose à retirer, et ne réécrit pas le fichier pour faire propre : elle lit, ne trouve rien, et rend l’entrée telle quelle. C’est ce qui rend l’opération sûre à lancer sur un lot dont on ne sait pas quels fichiers sont marqués — les fichiers déjà propres ne bougent pas.
Un fichier UTF-16 perd-il sa marque lui aussi ?
Non. En UTF-16, la marque en tête indique l’ordre des octets — petit-boutiste ou grand-boutiste — et le fichier en a besoin pour être lu correctement. La retirer rendrait le fichier ambigu, voire illisible. Cette page ne retire donc que la marque UTF-8 d’un fichier dont l’encodage est déjà déterminé autrement ; un fichier UTF-16 doit garder la sienne.
Le BOM peut-il revenir après un autre passage ?
Oui, si une étape ultérieure écrit le fichier avec un outil qui ajoute une marque, ou si vous utilisez la page d’ajout de BOM. Ce n’est pas un défaut : chaque page fait exactement une chose. Si un flux de travail exige l’absence de marque, placez le retrait en dernière étape, après la conversion de format et la conversion d’encodage, pour qu’aucune d’elles ne le réintroduise.
Quels formats sont acceptés par le retrait de BOM ?
Les douze formats de texte du site : SRT, WebVTT, ASS, SSA, SBV, SAMI, LRC, MicroDVD, TTML, JSON, TXT et CSV. La marque est une propriété du fichier, pas du format de sous-titres, donc elle se retire de la même façon partout. Un sous-titre en bitmap ou une vidéo n’entre pas dans cette page : ce sont des fichiers binaires, avec d’autres pages et d’autres limites.