Guia
Encontrar caracteres ocultos no VS Code
Ative o realce Unicode, busque pontos de código sem largura com uma expressão escapada e limpe o arquivo antes de falhas no build ou no diff.
Por Kris Vinters · Publicado em · 3 min de leitura
Use primeiro o realce Unicode do VS Code
Abra Configurações e pesquise Unicode Highlight. O VS Code agrupa avisos em caracteres invisíveis, ambíguos e não ASCII. Passe o cursor para ver o motivo. Os valores podem depender da confiança no workspace, comentários, strings, fontes e localidades permitidas.
As três configurações controlam as classes separadamente. Ative a necessária em vez de tratar todo Unicode como erro. Letras não ASCII são normais em traduções, nomes e testes; controles invisíveis pedem uma revisão mais específica.
editor.unicodeHighlight.invisibleCharacterseditor.unicodeHighlight.ambiguousCharacterseditor.unicodeHighlight.nonBasicASCII
O realce ajuda na revisão, mas não é uma análise completa. O VS Code descreve a classe ambígua como heurística; fonte e localidade influenciam o resultado.
Busque com uma expressão regular escapada
Abra Localizar, ative expressões regulares e digite o padrão mostrado. Ele contém somente ASCII visível, mas procura U+200B a U+200D e U+FEFF. Revise cada ocorrência antes de substituir.
Expressão: [\u200B-\u200D\uFEFF]
O intervalo cobre ZERO WIDTH SPACE, ZERO WIDTH NON-JOINER, ZERO WIDTH JOINER e o caractere de marca de ordem de bytes. Procure também \u2060 para WORD JOINER. Não apague automaticamente um joiner necessário em emoji ou escrita ligada.
Um caractere oculto pode dividir um identificador, diferenciar duas chaves, quebrar uma busca, alterar um token ou criar um diff em uma linha que parece igual. Uma marca no início também pode ser tratada de modo diferente do mesmo ponto no meio do arquivo.
U+200B ZERO WIDTH SPACEU+200D ZERO WIDTH JOINERU+FEFF ZERO WIDTH NO-BREAK SPACEU+2060 WORD JOINER
Limpe o texto inteiro e revise os achados
Em um arquivo de texto, selecione tudo, copie para o limpador e revise os achados antes de devolver a versão limpa. A passagem padrão remove caracteres sem largura soltos, mas preserva um joiner reconhecido como necessário em emoji ou escrita ligada.
Para .html compatível, ou documentos .docx e .odt, use o relatório do documento. Ele não aceita qualquer formato-fonte; para .js, .ts, .json ou .md, use o limpador por colagem.
Abrir o limpador de caracteres sem larguraAbrir o relatório do documento
Um caractere oculto pode explicar uma falha de build ou diff. Não explica quem escreveu o código ou a prosa. O limpador trata pontos de código; o relatório de prosa fornece medições sem veredito.
Perguntas sobre caracteres ocultos no VS Code
O VS Code realça todos os caracteres invisíveis por padrão?
Não. Valores e exceções podem depender da confiança no workspace, comentários, strings, caracteres permitidos e localidades. Pesquise Unicode Highlight e confira os valores efetivos.
A expressão encontra todos os caracteres Unicode ocultos?
Não. Ela procura U+200B a U+200D e U+FEFF. Adicione pontos como \u2060 para WORD JOINER ou use o limpador para uma tabela mais ampla.
Por que um caractere sem largura pode quebrar um build?
Analisadores, identificadores, somas e comparações trabalham com pontos de código, não aparência. Um ponto invisível pode dividir um token ou tornar diferentes duas strings visualmente iguais.
Veja mais explicações práticas em todos os guias sobre caracteres ocultos e os limites da limpeza.