1001Ferramentas
🧹 Utilitários

Remover BOM de Texto

Remove o Byte Order Mark (\uFEFF) de um texto colado. Resolve problemas comuns em CSVs gerados por Excel.

BOM detectado: não

O caractere invisível no começo do arquivo

BOM é a sigla de byte order mark, uma marca opcional no início do arquivo que sinaliza a codificação. Em UTF-16 ela tem função real, indicando a ordem dos bytes. Em UTF-8 ela é dispensável, mas o Bloco de Notas e várias ferramentas da Microsoft a acrescentam mesmo assim, gravando os três bytes EF BB BF antes do primeiro caractere de verdade.

O estrago é sempre o mesmo: um caractere invisível onde nada deveria existir. Em PHP, saída antes do header provoca "headers already sent". Em CSV, a primeira coluna do cabeçalho ganha lixo no nome e a importação não encontra o campo. Em JSON, o parser rejeita o arquivo inteiro. Em script de shell, a linha do shebang deixa de ser reconhecida. Cole o texto aqui e a página diz se havia BOM e devolve o conteúdo sem ele.

A detecção olha o primeiro caractere e procura o U+FEFF. Vale saber que o navegador às vezes já remove a marca durante a colagem, o que faz a página relatar ausência mesmo em conteúdo que tinha BOM no disco — para conferir o arquivo, o caminho certo é hexdump -C arquivo | head -1 e olhar os três primeiros bytes. Para gravar sem a marca, praticamente todo editor tem a opção "UTF-8 sem BOM" na escolha de codificação.

Perguntas frequentes

BOM em UTF-8 é errado?
Não é proibido, mas é desaconselhado pela própria especificação do Unicode: em UTF-8 não existe ambiguidade de ordem de bytes, então a marca não informa nada de útil. O consenso em ambientes Unix é gravar sem BOM. A exceção comum é o Excel, que interpreta melhor CSV acentuado quando o arquivo tem a marca.
Como remover o BOM de vários arquivos de uma vez?
No terminal: sed -i '1s/^\xEF\xBB\xBF//' *.csv remove só do início do primeiro arquivo de cada. Para varrer uma árvore inteira, combine com find. Vale conferir antes com file *, que identifica os arquivos "UTF-8 Unicode (with BOM) text".
Meu JSON dá erro na primeira posição e não vejo nada de errado. O que é?
É o sintoma clássico. Mensagens como "Unexpected token in JSON at position 0" ou "SyntaxError: Unexpected token " com um espaço estranho apontam para BOM. O parser lê a marca como caractere fora do lugar, porque a gramática do JSON não a prevê.

Ferramentas Relacionadas