BOM aus Untertiteln entfernen
Oder Untertiteltext einfügen
Optionen
Ein BOM sind drei Bytes ganz am Anfang der Datei, die angeben, in welcher Kodierung sie vorliegt. Er ist in jedem Editor und Player unsichtbar, nimmt auf dem Bildschirm keinen Platz ein, und an den Untertiteln ändert sich nichts, wenn er hinzugefügt oder entfernt wird. Zwei Arten von Werkzeugen kümmern sich darum: Windows-Programme, die Untertitel schreiben und standardmäßig eines setzen, und strenge Parser in Build-Pipelines, die eine Datei ablehnen, die damit beginnt. Diese Seite öffnet das Feld in dem Zustand, den ihr Titel nennt, sodass Sie es umschalten können, wenn Ihre Datei sich als umgekehrt herausstellt. Eine Datei in UTF-16 trägt immer ein BOM, denn so erkennt ein Leser, welche der beiden Byte-Reihenfolgen er vor sich hat — das Entfernen an dieser Stelle lässt es stehen.
In welcher Bildrate die Zeitangaben gezählt werden. Auf den Formatseiten ist das, was MicroDVD braucht, denn es speichert Zeitangaben als Bildnummern. Auf den Bildraten-Seiten ist es die Rate, gegen die die Datei getaktet wurde — die Fassung, für die die Untertitel erstellt wurden —, und das zweite Feld der Seite nimmt die Rate des Videos auf, mit dem Sie sie verwenden wollen. 23,976, 24, 25, 29,97, 30, 50, 59,94 und 60 sind die üblichen. Ein falscher Wert verschiebt die gesamte Zeitachse, und auf den Bildraten-Seiten verschiebt er sie um einen Faktor statt um einen festen Betrag.
Die Byte Order Mark ist ein Zeichen, U+FEFF, das vor allem anderen in einer Datei steht. Viele Werkzeuge schreiben sie, viele erwarten sie nicht, und die, die sie nicht erwarten, zeigen sie als kurzen Symbolblock, der am Anfang des ersten Blocks klebt. Diese Seite nimmt sie ab und lässt alles andere genau so, wie sie es vorgefunden hat.
Sie zu entfernen zählt am meisten dort, wo die Datei aufhört, etwas für Menschen Lesbares zu sein, und anfängt, etwas für Programme Geparstes zu sein: Untertitel-Build-Pipelines, Skripte, die die erste Zeile einer Datei lesen, und Formate, deren Spezifikation sagt, die ersten Bytes seien das erste Zeichen des ersten Blocks. Sie zählt auch beim Zusammenführen von Dateien, denn eine Markierung mitten in einer verbundenen Datei ist ein Zeichen mitten in einem Block. Und sie zählt bei der Abgabe: Sagt die Vorgabe, auf die Sie liefern, UTF-8 ohne Markierung, ist eine Markierung ein Unterschied, den die Prüfung findet.
Was die Seite nicht tut, ist sonst irgendetwas für Sie zu entscheiden. Blocknummern, Zeitcodes, Blocktext und Zeilenenden kommen alle so zurück, wie sie hineingingen, CRLF eingeschlossen, und eine Datei ohne Markierung kommt Byte für Byte zurück, statt in etwas Gleichwertiges umgeschrieben zu werden. Eine Markierung zu entfernen ist nicht dasselbe wie die Zeichenkodierung einer Datei zu ändern, und beides wird oft verwechselt: Diese Seite ändert das erste Zeichen der Datei und nichts daran, wie der Rest kodiert ist.
Es gibt einen Fall, in dem der Titel dieser Seite und das tatsächliche Verhalten auseinandergehen, und den sollte man kennen, bevor man sie laufen lässt. Eine UTF-16-Datei braucht ihre Markierung: Ohne sie lassen sich die beiden Byte-Reihenfolgen nicht unterscheiden, eine ohne Markierung geschriebene UTF-16-Datei kann also nicht zurückgelesen werden. Schicken Sie eine durch diese Seite, trägt die heruntergeladene Datei weiterhin eine Markierung, weil die Alternative eine Datei wäre, die niemand öffnen kann. Ist Ihre Datei UTF-16 und die Markierung muss weg, wollen Sie eine andere Kodierung und nicht dieselbe ohne Markierung; die Seite für Kodierungsumwandlung ist unten verlinkt.
Die Markierung wird der Datei entfernt, die Sie herunterladen; die beiden Fenster können hier also identisch aussehen – ein Zeichen ohne Breite sieht genau so aus wie ein unsichtbares Zeichen. Prüfen Sie das Ergebnis an der Kodierungsanzeige Ihres Editors oder in einem Hex-Viewer: Eine Datei ohne Markierung beginnt mit dem ersten Byte ihres ersten Blocks. Alle zwölf Formate dieser Website werden angenommen, von SRT bis zum schlichten Text-Transkript, und nichts wird hochgeladen: Die Datei wird im Browser gelesen, geändert und geschrieben.
Beispiele
Eine markierte Datei, der die Markierung genommen wird
Eingabe
1
00:00:01,000 --> 00:00:02,000
The room is dark.
Ausgabe
1
00:00:01,000 --> 00:00:02,000
The room is dark.
Die Eingabe beginnt mit U+FEFF, die Ausgabe nicht: Die beiden Dateien unterscheiden sich um genau dieses eine Zeichen, und darin besteht die ganze Operation. Dateien in diesem Zustand kommen meist aus einem Windows-Untertitelprogramm, und der Grund, die Markierung loswerden zu wollen, ist ein Build-Schritt oder ein strenger Parser, der die ersten Bytes ansieht statt die Blöcke.
Eine Windows-Datei, Markierung entfernt und Wagenrückläufe erhalten
Eingabe
1
00:00:01,000 --> 00:00:02,000
Marked and Windows.
Ausgabe
1
00:00:01,000 --> 00:00:02,000
Marked and Windows.
Nur die Markierung geht. Jeder Wagenrücklauf gehört der Datei, und diese Seite hat dazu keine Meinung – wer beides geändert haben will, braucht die Seite für Zeilenenden, und die beiden getrennt zu halten ist es, was jede von ihnen unbedenklich für eine ungelesene Datei macht. Der erwartete Text enthält seine CRLF weiterhin genau wie die Eingabe.
Eine Datei ohne Markierung, Byte für Byte zurückgegeben
Eingabe
1
00:00:01,000 --> 00:00:02,000
The room is dark.
Ausgabe
1
00:00:01,000 --> 00:00:02,000
The room is dark.
Es gab nichts zu entfernen, die Datei kommt also unverändert zurück – einschließlich der Abwesenheit einer Markierung. Das ist der Fall, der eine Implementierung entlarvt, die zuerst eine Markierung schreibt und sie danach entfernt oder die Datei unterwegs normalisiert: Die ehrliche Lesart von „es gab nichts zu tun“ ist die Eingabe selbst, Byte für Byte, und keine aufgeräumte Fassung davon.
Häufige Fragen
Wie erkenne ich, ob meine Untertiteldatei eine Byte Order Mark hat?
Öffnen Sie sie in einem Editor, der die Dateikodierung zeigt; eine UTF-8-Datei mit Markierung ist üblicherweise als UTF-8 mit BOM oder UTF-8 BOM beschriftet statt als schlichtes UTF-8. Andernfalls sehen Sie sich die ersten Bytes in einem Hex-Viewer an: Eine Datei, die mit EF BB BF beginnt, trägt eine, eine, die mit dem ersten Zeichen des Blocks beginnt, nicht. Der Symbolblock am Anfang der ersten Zeile ist dasselbe, gesehen von einem Programm, das die Markierung als drei gewöhnliche Zeichen gelesen hat.
Warum bleibt die Markierung nach dem Entfernen auf einer UTF-16-Untertiteldatei?
Weil eine UTF-16-Datei eine braucht. UTF-16 speichert jedes Zeichen als zwei Bytes, und die beiden Byte-Reihenfolgen sehen von außen gleich aus; die Markierung sagt einem Leser also, welche Reihenfolge gilt – eine UTF-16-Datei ohne Markierung kann weder von dieser Website noch von irgendetwas anderem zurückgelesen werden. Die Seite behält sie aus diesem Grund. Soll eine Datei überhaupt keine Markierung haben, ändern Sie ihre Kodierung auf UTF-8 oder Windows-1252, wo die Markierung optional ist.
Beschädigt diese Seite eine Untertiteldatei, die nie eine Markierung hatte?
Nein. Die Ausgabe dieses Falls ist die Eingabe, Byte für Byte, und es wird nichts gemeldet. Die Seite auf eine Datei anzuwenden, deren Zustand man nicht kennt, ist aus demselben Grund konstruktionsbedingt sicher: Ohne zu entfernende Markierung gibt es nichts zu schreiben, mit ihr die kleinstmögliche Änderung. Ein Lauf, der nichts zu tun fand, ist kein Lauf, der etwas getan hat.
Kann eine Untertiteldatei mehr als eine Byte Order Mark haben?
Ja, und das passiert immer dann, wenn ein Werkzeug eine Markierung hinzufügt, ohne vorher nach einer zu suchen – die zweite Markierung erzeugt eine Datei, die in einem Editor völlig normal aussieht und sich in den ersten Bytes von einer normalen unterscheidet. Diese Seite entfernt alle statt einer, eine doppelt markierte Datei wird also in einem Durchgang bereinigt, und ein weiterer Lauf ändert nichts mehr.
Ändert das Entfernen einer Markierung die Kodierung meiner Untertiteldatei?
Nicht in dem Sinn, den man meistens meint. Der Text der Datei besteht weiterhin aus denselben Zeichen, und der Rest ist weiterhin gleich kodiert; geändert wird, dass ein Leser die ersten Bytes nicht mehr als Kodierungsangabe vorfindet. Eine UTF-8-Datei ohne Markierung ist gewöhnliches UTF-8, was die meisten Werkzeuge ohnehin annehmen. Die Kodierung selbst zu ändern ist eine eigene Seite, die von hier verlinkt ist.
Kommt die Markierung beim Herunterladen der Untertiteldatei zurück?
Nein. Der Download ist der Moment, in dem die Datei geschrieben wird, und ein Lauf dieser Seite schreibt sie ohne Markierung; Sie bekommen also, was die beiden Fenster beschreiben. Die Kodierung, in der eine Datei geschrieben wird, bleibt die, als die sie gelesen wurde, mit einer Ausnahme: Eine als UTF-16 ankommende Datei wird als UTF-16 zurückgeschrieben und behält ihre Markierung, weil diese Markierung strukturell und nicht dekorativ ist.