Remover o BOM das legendas
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.
A marca de ordem de bytes é um caractere, U+FEFF, colocado na frente de tudo o mais em um arquivo. Muitas ferramentas a escrevem e muitas ferramentas não a esperam, e as que não esperam a mostram como um pequeno bloco de símbolos grudado no começo da primeira legenda. Esta página a remove e deixa todo o resto exatamente como encontrou.
Removê-la importa sobretudo onde o arquivo deixa de ser algo que uma pessoa lê e passa a ser algo que um programa analisa: pipelines de build de legendas, scripts que leem a primeira linha de um arquivo e formatos cuja especificação diz que os bytes de abertura são o primeiro caractere da primeira legenda. Importa também quando arquivos são concatenados, porque uma marca no meio de um arquivo unido é um caractere no meio de uma legenda. E importa para a entrega: se a especificação para a qual você está entregando diz UTF-8 sem marca, a marca é uma diferença que o conferidor vai encontrar.
O que a página não vai fazer é decidir qualquer outra coisa por você. Números de legenda, timecodes, texto das legendas e fins de linha voltam como entraram, inclusive CRLF, e um arquivo que não tinha marca volta byte a byte em vez de ser reescrito em algo equivalente. Remover uma marca não é o mesmo que mudar a codificação de caracteres de um arquivo, e as duas coisas são frequentemente confundidas: esta página muda o primeiro caractere do arquivo e nada sobre como o resto dele é codificado.
Há um caso em que o título desta página e o que realmente acontece se separam, e vale conhecê-lo antes de rodar. Um arquivo UTF-16 precisa da marca: sem uma, não há como distinguir as duas ordens de bytes, então um arquivo UTF-16 gravado sem marca não pode ser lido de volta. Passe um por esta página e o arquivo baixado ainda carregará uma marca, porque a alternativa seria um arquivo que ninguém consegue abrir. Se o seu arquivo é UTF-16 e a marca tem de sair, o que você quer é outra codificação, não a mesma sem a marca, e a página que converte codificações está ligada abaixo.
A marca é removida do arquivo que você baixa, então os dois painéis podem parecer idênticos aqui — um caractere de largura zero é exatamente com o que se parece um caractere invisível. Confira o resultado no indicador de codificação do seu editor ou em um visualizador hexadecimal: um arquivo sem marca começa com o primeiro byte da primeira legenda. Todos os doze formatos que este site trata são aceitos, de SRT a uma transcrição em texto simples, e nada é enviado: o arquivo é lido, alterado e gravado dentro do seu navegador.
Exemplos
Um arquivo marcado, com a marca retirada
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.
A entrada começa com U+FEFF e a saída não: os dois arquivos diferem exatamente por esse caractere, que é a operação inteira. Arquivos nesse estado normalmente saíram de um programa de legenda do Windows, e a razão de as pessoas quererem a marca fora é uma etapa de build ou um analisador estrito que olha os bytes de abertura em vez das legendas.
Um arquivo do Windows, com a marca removida e os retornos de carro mantidos
Entrada
1
00:00:01,000 --> 00:00:02,000
Marked and Windows.
Saída
1
00:00:01,000 --> 00:00:02,000
Marked and Windows.
Só a marca sai. Cada retorno de carro é do próprio arquivo e esta página não tem opinião sobre eles — quem quer os dois mudados quer a página de fins de linha, e manter os dois separados é o que torna cada uma segura de rodar em um arquivo que você não abriu. O texto esperado ainda mantém o CRLF exatamente como a entrada.
Um arquivo sem marca, devolvido byte a byte
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.
Não havia nada a remover, então o arquivo volta inalterado — incluindo a ausência de uma marca. Este é o caso que pega uma implementação que grava uma marca primeiro e a retira depois, ou que normaliza o arquivo no caminho: a leitura honesta de "não havia nada a fazer" é a entrada em si, byte a byte, e não uma versão arrumada dela.
Perguntas frequentes
Como descubro se o meu arquivo de legenda tem uma marca de ordem de bytes?
Abra em um editor que mostra a codificação do arquivo, e um arquivo UTF-8 com marca costuma ser rotulado UTF-8 com BOM ou UTF-8 BOM em vez de UTF-8 simples. Se não houver isso, olhe os primeiros bytes em um visualizador hexadecimal: um arquivo que começa com EF BB BF carrega uma, e um que começa com o primeiro caractere da legenda não. O bloco de símbolos no início da primeira linha é a mesma coisa vista por um programa que leu a marca como três caracteres comuns.
Por que a marca continua em um arquivo de legenda UTF-16 depois de removê-la?
Porque um arquivo UTF-16 precisa de uma. O UTF-16 guarda cada caractere como dois bytes e as duas ordens de bytes parecem iguais por fora, então a marca é o que diz ao leitor em qual ordem ele está — um arquivo UTF-16 sem marca não pode ser lido de volta, por este site nem por qualquer outra coisa. A página em que você está a mantém por esse motivo. Para obter um arquivo sem marca nenhuma, mude a codificação dele para UTF-8 ou Windows-1252, onde a marca é opcional.
Esta página danifica um arquivo de legenda que nunca teve marca?
Não. A saída desse caso é a entrada, byte a byte, e nada é informado sobre ela. Rodar a página em um arquivo cujo estado você desconhece é seguro por construção pelo mesmo motivo: sem marca a remover não há o que gravar, e com uma há a menor mudança possível. Uma execução que não encontrou nada a fazer não é uma execução que fez algo.
Um arquivo de legenda pode ter mais de uma marca de ordem de bytes?
Pode, e acontece sempre que uma ferramenta acrescenta uma marca sem antes verificar se já existe — a segunda marca cria um arquivo que parece completamente normal em um editor enquanto difere de um arquivo normal nos bytes de abertura. Esta página remove todas, e não só uma, então um arquivo com marca dupla é limpo em uma passada e rodar a página de novo não muda mais nada.
Remover uma marca muda a codificação do meu arquivo de legenda?
Não no sentido que as pessoas costumam dar. O texto do arquivo continua sendo os mesmos caracteres e o resto dele continua codificado do mesmo jeito; o que muda é que o leitor deixa de ter nos bytes de abertura do arquivo a informação da codificação. Um arquivo UTF-8 sem marca é UTF-8 comum, que é o que a maioria das ferramentas assume de qualquer jeito. Mudar a codificação em si é outra página, ligada a partir desta.
A marca vai voltar quando eu baixar o arquivo de legenda?
Não. O download é o momento em que o arquivo é gravado, e uma execução desta página o grava sem marca, então o que você recebe é o que os dois painéis descrevem. A codificação em que um arquivo é gravado é preservada de como ele foi lido, com uma exceção: um arquivo que chega como UTF-16 é gravado de volta como UTF-16 e mantém a marca, porque essa marca é estrutural e não decorativa.