Ir para o conteúdo principal
SubtitleMatrix

Adicionar BOM às legendas

Texto e estiloCorrigir codificação e BOM
Ou cole o texto da legenda

Opções

Uma BOM são três bytes bem no início do arquivo que declaram em que codificação ele está. É invisível em todo editor e reprodutor, não ocupa espaço na tela, e nada nas legendas muda quando ela é adicionada ou removida. Dois tipos de ferramenta se importam com ela: programas do Windows que gravam legendas, que colocam uma por padrão, e analisadores rígidos em pipelines de build, que rejeitam um arquivo que começa com uma. Esta página abre a caixa no estado que seu título nomeia, então você pode invertê-la se o seu arquivo estiver do outro jeito. Um arquivo em UTF-16 sempre carrega uma BOM, porque é assim que um leitor sabe qual das duas ordens de bytes está vendo — pedir para removê-la ali a deixa onde está.

A taxa de quadros em que os tempos são contados. Nas páginas de formato é o que o MicroDVD precisa, porque ele guarda os tempos como números de quadro. Nas páginas de taxa de quadros é a taxa com que o arquivo foi cronometrado — a versão para a qual as legendas foram feitas — e a segunda caixa da página recebe a taxa do vídeo com que você vai usá-las. 23,976, 24, 25, 29,97, 30, 50, 59,94 e 60 são as comuns. Errar isso desloca toda a linha do tempo e, nas páginas de taxa de quadros, desloca por uma proporção em vez de por uma quantidade fixa.

Uma marca de ordem de bytes é um caractere — U+FEFF — colocado na frente de tudo o mais no arquivo. Em UTF-8 são três bytes, EF BB BF, e é a primeira coisa que um leitor vê. Nada na saída desta página parece diferente: as mesmas legendas, os mesmos timecodes, os mesmos fins de linha e uma marca na frente da primeira delas.

Por que alguém quer isso ali é que a marca é como um arquivo diz "sou UTF-8" sem dizer. Um programa que abre um arquivo de legenda tem de adivinhar em que codificação ele está, e muitos deles — tocadores mais antigos do Windows, ferramentas de autoração de disco, scripts que leem a primeira linha — decidem olhando os primeiros bytes em vez de tentar analisar o arquivo inteiro. Dê a eles a marca e um nome acentuado, uma aspa curva ou uma letra grega saem como elas mesmas. Deixe-a de fora e o mesmo arquivo pode ser lido como a página de código local do sistema, onde esses caracteres viram outra coisa completamente.

O outro sentido é o que as pessoas costumam encontrar primeiro: um arquivo que tem uma marca, aberto por uma ferramenta que não espera uma. Essa ferramenta lê os três bytes como três caracteres e os mostra no começo da primeira linha, e é daí que vem o pequeno bloco de símbolos no topo do arquivo de legenda de alguém. Se é isso que você está vendo, esta é a página errada — a marca precisa ser removida em vez de acrescentada, e a página que faz isso está ligada abaixo.

O que a página não vai fazer é reformatar o seu arquivo no caminho. Ela não toca nos fins de linha CRLF, nos números das legendas, nos tempos nem no texto de nenhuma legenda, e não decide a codificação do seu arquivo por você: um arquivo que não é UTF-8 é outro problema, e há uma página para ele também. O que ela faz é acrescentar um caractere no comecinho, e se o caractere já estiver lá ela deixa o arquivo em paz em vez de acrescentar um segundo, então rodar a página duas vezes dá o mesmo arquivo que rodar uma.

A marca é acrescentada ao arquivo que você baixar. As duas painéis desta página podem, portanto, ser idênticos aos olhos — um caractere invisível é exatamente com o que se parece um caractere invisível — e a forma honesta de conferir o resultado é olhar os três primeiros bytes em um visualizador hexadecimal ou a codificação do arquivo na barra de status do seu editor. Todos os doze formatos de legenda que este site trata podem carregar uma marca, porque a marca é uma propriedade dos bytes de abertura do arquivo e não sabe nada sobre legendas. Nada é enviado em momento algum: o arquivo é lido, alterado e gravado dentro do seu navegador.

Exemplos

Um arquivo de legenda em ASCII, com uma marca na frente

Entrada

1
00:00:01,000 --> 00:00:02,000
The room is dark.

2
00:00:03,000 --> 00:00:04,000
A cold night.

Saída

1
00:00:01,000 --> 00:00:02,000
The room is dark.

2
00:00:03,000 --> 00:00:04,000
A cold night.

O texto esperado começa com um caractere invisível: U+FEFF, os três bytes EF BB BF, antes do 1 do número da primeira legenda. Os dois painéis vão parecer iguais para você, e isso não é falha de renderização — a diferença entre esses arquivos tem três bytes de comprimento e nenhum deles tem forma. Baixe o resultado e abra em um editor que mostra a codificação, ou olhe os primeiros bytes em um visualizador hexadecimal, e é a primeira coisa que você vê.

Um arquivo do Windows, com a marca acrescentada e os retornos de carro mantidos

Entrada

1
00:00:01,000 --> 00:00:02,000
The room is dark.

Saída

1
00:00:01,000 --> 00:00:02,000
The room is dark.

As duas coisas que uma ferramenta de legenda do Windows escreve são uma marca e fins de linha CRLF, e é por isso que as duas são confundidas — mas são separadas, e esta página escreve só a primeira. Cada retorno de carro do arquivo esperado é do próprio arquivo de entrada, e a marca é acrescentada na frente deles. Uma página que reescrevesse também os fins de linha reformataria em silêncio todo arquivo entregue a ela, que é justamente o tipo de mudança que ninguém percebe até uma ferramenta depois na cadeia se importar.

Um arquivo que já carrega uma marca

Entrada

1
00:00:01,000 --> 00:00:02,000
Already marked.

Saída

1
00:00:01,000 --> 00:00:02,000
Already marked.

A entrada já tem uma marca, então a saída é a entrada byte a byte — o arquivo mantém exatamente uma. A versão ingênua desta página, que cola uma marca sem antes remover o que está lá, produz um arquivo com duas, e uma marca duplicada é invisível em todo editor enquanto é um arquivo diferente para qualquer coisa que leia os bytes de abertura. Rodar a página em um arquivo já marcado deve ser algo que você pode fazer sem pensar.

Perguntas frequentes

O que acrescentar uma marca de ordem de bytes a um arquivo de legenda muda de fato?

Um caractere no comecinho do arquivo: U+FEFF, escrito como os três bytes EF BB BF em UTF-8. Nenhuma legenda é acrescentada, removida ou editada, nenhum timecode se move, os números das legendas e os fins de linha saem como entraram, e o texto de cada linha não é tocado. Se você comparar os dois arquivos, a única linha que difere é a primeira, e ela difere por três bytes no começo.

Por que os dois painéis desta página de BOM de legenda parecem idênticos?

Porque o caractere que está sendo acrescentado não tem forma. U+FEFF é um espaço sem largura e sem quebra, então um painel que renderiza texto como o seu tocador mostraria a mesma coisa antes e depois. A mudança é real e está no arquivo que você baixa: a diferença são os três primeiros bytes. O indicador de codificação do seu editor, ou um visualizador hexadecimal mostrando EF BB BF no início, é onde procurar, e não no texto.

É seguro rodar esta ferramenta de BOM mais de uma vez no mesmo arquivo?

É. A página remove qualquer marca já presente antes de escrever a própria, então um arquivo que já carrega uma volta inalterado e um arquivo que não tem recebe exatamente uma. Duas execuções dão o mesmo arquivo que uma. Isso também significa que um arquivo que passou por esta página e depois por uma ferramenta que acrescentou uma segunda marca pode ser corrigido passando-o por aqui uma vez, porque só uma sobrevive.

A marca é mantida se eu converter o arquivo de legenda para outro formato depois?

Não pelas páginas de conversão deste site, que gravam UTF-8 simples sem marca, então uma marca acrescentada aqui não atravessa uma mudança de formato. Ordene o trabalho de acordo: converta primeiro e acrescente a marca como último passo antes da entrega. Essa também é a ordem mais sensata em geral, já que a marca é uma propriedade do arquivo final e não do conteúdo da legenda.

Acrescentar uma marca a um arquivo de legenda muda os fins de linha dele?

Não. Uma marca é um caractere colocado antes do primeiro byte do arquivo e não tem efeito sobre o que vem depois. Um arquivo do Windows cheio de CRLF continua cheio de CRLF, um arquivo Unix continua em LF, e um arquivo com fins mistos sai com a mesma mistura com que chegou. Mudar fins de linha é outra página, e é má ideia uma página fazer as duas coisas em silêncio.

Quais formatos de legenda podem receber uma marca de ordem de bytes?

Todos os doze que este site trata: SRT, WebVTT, ASS, SSA, SBV, SAMI, LRC, MicroDVD, TTML, JSON e CSV. A marca diz respeito aos bytes de abertura do arquivo e não ao formato de legenda, então não há nada específico de formato a acertar — até uma transcrição em texto simples, que não tem linha do tempo nenhuma, pode carregar uma.

Ferramentas relacionadas