1001Ferramentas
🔎 Utilitários

Detector de BOM em Arquivo

Verifica se um arquivo enviado começa com Byte Order Mark (UTF-8, UTF-16-LE, UTF-16-BE, UTF-32). Útil para problemas de encoding.

Aguardando arquivo…

Descobrir a codificação pelos primeiros bytes

Alguns arquivos de texto começam com uma marca de ordem de bytes, três a quatro bytes que declaram a codificação antes do primeiro caractere de verdade. Ela é obrigatória na prática para UTF-16 e UTF-32, onde indica a ordem dos bytes, e opcional em UTF-8, onde só serve de indicação. Como esses bytes são invisíveis em qualquer editor, um arquivo com problema de codificação não dá pista nenhuma na tela.

Escolha o arquivo e a página lê o começo dele e identifica a marca: UTF-8, UTF-16 em qualquer das duas ordens, ou UTF-32 nas duas ordens. Quando não há marca, ela diz isso — o que não significa que o arquivo seja UTF-8, apenas que ele não se declara. O arquivo é lido no próprio navegador e não é enviado a lugar nenhum.

A ordem da checagem importa mais do que parece. A marca de UTF-32 pequeno-endian começa com os mesmos dois bytes da marca de UTF-16 pequeno-endian, então testar o UTF-16 primeiro classificaria todo UTF-32 errado. É por isso que os padrões de quatro bytes são verificados antes dos de dois — detalhe fácil de errar em implementação artesanal.

Perguntas frequentes

Ausência de marca significa UTF-8?
Não significa nada com certeza. Arquivo UTF-8 sem marca é o caso mais comum em ambiente Unix, mas um arquivo em Windows-1252 ou ISO-8859-1 também não tem marca. Sem declaração, a codificação precisa ser deduzida do conteúdo ou vir combinada por fora.
Devo remover a marca de UTF-8?
Em geral sim, se nada exigir o contrário: a especificação do Unicode a desaconselha em UTF-8, e ela quebra shebang de script, provoca saída antes do cabeçalho em PHP e faz o parser de JSON rejeitar o arquivo. A exceção conhecida é o Excel, que lida melhor com CSV acentuado quando a marca está presente.
Dá para detectar codificação sem marca?
Só por estimativa. Bibliotecas de detecção analisam a distribuição de bytes e comparam com o padrão de cada codificação e idioma, o que funciona bem em texto longo e erra em texto curto. Quando possível, o certo é combinar a codificação em vez de adivinhar.

Ferramentas Relacionadas