Pular para o conteúdo
Ghostchars

Largura zero e invisíveis

ZERO WIDTH NO-BREAK SPACE (U+FEFF)

A marca de ordem de bytes, U+FEFF, que editores e mensagens de erro costumam escrever como ufeff. Bem no começo de um arquivo ela anuncia a codificação; em qualquer outro lugar é um nada invisível que ainda por cima proíbe a quebra de linha, uso que o Unicode desaconselha desde a versão 3.2.

Ponto de código
U+FEFF
Também escrito como
ufeff\ufeff
Removido por padrão
Sim
Opção que governa
Nenhuma opção necessária
Pode ser essencial
Não

Copiar e colar U+FEFF

Para copiar e colar ZERO WIDTH NO-BREAK SPACE (U+FEFF), clique no botão: o próprio caractere vai para a sua área de transferência, e Ctrl+V (Cmd+V no Mac) cola em qualquer lugar onde você possa digitar.

De onde ele vem

De editores do Windows, de exportações do Excel e de tudo o que grava "UTF-8 com BOM". Concatenar vários arquivos assim deixa uma BOM no meio do resultado. Ela também chega pela colagem: copie uma célula de planilha, uma linha de um editor ou o conteúdo de um formulário web e o texto pode começar com um caractere invisível, de modo que a caixa de busca parece a coisa mais normal do mundo e a consulta falha assim mesmo.

Por que ele importa

Uma BOM no início quebra parsers de JSON, front matter YAML, shebangs de shell e cabeçalhos de CSV; uma BOM no meio é simplesmente um caractere invisível que derruba qualquer comparação exata. É também o motivo de um arquivo de configuração "parecer certinho" e não carregar.

Antes e depois

ZERO WIDTH NO-BREAK SPACE (U+FEFF) antes e depois da limpeza, com o caractere oculto mostrado como uma etiqueta
Cartão de referência deste caractere: o ponto de código, o veredito e o mesmo antes e depois em uma imagem.
AntesU+FEFF{"ok": true}
Depois{"ok": true}

O primeiro caractere, invisível, é o motivo de o `JSON.parse` recusar esta string.

O caractere aparece como uma etiqueta para você ver onde ele fica. No seu texto, ele não desenha absolutamente nada.

Quando ele é legítimo

Como primeiro caractere de um arquivo, no papel de assinatura de codificação, que é uma propriedade do ARQUIVO, não do texto. Quando o texto já está em uma caixa de colar, não sobra nenhuma BOM legítima.

Como remover

A limpeza padrão remove, esteja ela onde estiver. O Ghostchars trabalha com texto, então trata a BOM inicial como texto também.

O seu texto está em um arquivo e não na área de transferência? O relatório do documento para .docx, .odt e .html encontra o caractere dentro do arquivo, junto com os trechos ocultos e as alterações controladas, sem que você precise abri-lo. Se a pergunta é o que o resto do texto faz, e não o que este caractere faz, você pode medir a variação no tamanho das frases e ver onde cada hábito aparece, sem nota e sem afirmar nada sobre quem escreveu o texto.

Ele é uma marca d'água de IA?

Não é marca d'água

Não. Uma BOM é um artefato de codificação produzido por editores e por rotinas de exportação. Ela diz alguma coisa sobre o programa que salvou o arquivo e nada sobre quem escreveu as palavras.

Nenhuma relação com texto gerado por máquina. Ele vem de algum software, de um teclado ou de uma pessoa.

Perguntas

Por que o texto que eu colei começa com um caractere invisível?

Quase sempre é uma BOM que veio junto na cópia: a origem gravou um U+FEFF na frente, e ele veio com todos os caracteres visíveis atrás. A limpeza padrão remove. Se você quiser ver antes de limpar, cole o texto aqui e mude para "Ver o que está oculto": ali o ufeff que fica antes da primeira letra aparece marcado.

Por que o meu JSON não faz parse?

Uma BOM no início é um caractere antes da chave de abertura. A maioria dos parsers de JSON a rejeita como token inesperado, e o erro aponta para a posição 0, onde não há nada visível.

A BOM é a mesma coisa que o word joiner?

No meio de um texto, as duas se comportam igual. O Unicode desaconselhou o U+FEFF nesse papel e fez do U+2060 WORD JOINER o caractere correto, deixando o U+FEFF só como marca de ordem de bytes.

Confira o seu próprio texto

Cole qualquer coisa no limpador para ver todos os caracteres ocultos que ela contém, com posição, ponto de código e o que acontece com cada um. Nada é enviado para lugar nenhum.

Confira o seu próprio textoLimpar no Chrome na hora de colarLimpar no seu Mac com um atalho de tecladoTodos os caracteres

Estatísticas de uso anônimas?

O Ghostchars processa seu texto no navegador e nunca o envia para lugar nenhum. Gostaríamos de contar as visitas às páginas com um serviço de medição hospedado por nós, com o mínimo de cookies. Nunca o conteúdo, em hipótese alguma.