Indícios não são diagnóstico
Linhas visualmente iguais podem não coincidir; buscas falham e comprimentos surpreendem. Acentos compostos, apóstrofos e regras distintas causam sintomas parecidos. Isole uma linha antes de alterar arquivos. Para conteúdo sigiloso, use exemplo inventado. Códigos específicos mostram a transformação necessária; exclusão ampla esconde causa e efeitos indesejados.
Nomeie os pontos de código
General Punctuation inclui U+200B ZERO WIDTH SPACE, U+200C ZERO WIDTH NON-JOINER, U+200D ZERO WIDTH JOINER e U+2060 WORD JOINER. Têm funções diferentes. Registre código e posição. O marcador [U+200B] torna a posição visível, mas não é o caractere original: contá-lo acrescenta notação. Separe cópia e diagnóstico.
A aparência pode esconder outra sequência
AB tem dois pontos; A + U+200B + B tem três pontos e três grafemas no exemplo, quase sem mudança visual. A + U+200D + B mantém três pontos, agrupados em dois grafemas. Não presuma que todo invisível acrescente um grafema. Quantidades não classificam caracteres: inspecione códigos e método.
Alguns invisíveis são necessários
Joiners unem figuras de emoji; apagá-los pode separá-las. Outras escritas usam elementos que afetam ligações entre letras. Não aplique limpeza de listas italianas cegamente a texto multilíngue. Veja emojis e contagem. Confira prévia e preserve originais; menor comprimento não prova representação melhor.
Espaços não separáveis são outro caso
Eles têm largura e mantêm pares na mesma linha. Substituir pode melhorar comparação; apagar pode unir palavras. Diferencie conversão e remoção. A guia de espaços não separáveis compara U+0020, U+00A0 e U+202F. A escolha depende do trabalho, não de limpeza universal.
Altere uma categoria por vez
Duplique, identifique uma categoria, teste poucas linhas e registre ocorrências alteradas. Para busca, considere chaves separadas; para exportação, confira importação posterior. Não misture remoção, compressão de espaços e mudança de caixa: isso esconde causas. Inspecione colisões antes de apagar linhas e declare o que é duplicata.
Respeite identidade exata dos dados
Senhas, assinaturas, códigos e valores técnicos podem exigir sequências exatas. Siga formato do sistema ou responsável, não regra editorial. Controles de direção em escritas mistas precisam de contexto. Esta guia não valida segurança nem detecta toda sequência; ajuda a documentar alterações proporcionais ao problema.
Confira aparência e conteúdo
Revise exibição e códigos, repita busca ou comparação falha e meça no contador. Declare se removeu, substituiu ou reagrupou elementos. Se persistir, examine normalização e codificação da origem. Não amplie exclusões apenas para forçar igualdade. Preserve exemplo, original e registro para corrigir a regra.
Descreva posições claramente
Confira se o inspetor numera unidades UTF-16 ou símbolos percebidos, sobretudo após emojis compostos. Acrescente texto vizinho: “U+200B entre A inicial e B final” evita índices ambíguos. Preserve quebras em testes multilinha e registre espaços removidos, que deslocam posições. Guarde amostra original, vista de códigos e resultado juntos.
Identifique antes de alterar
| Elemento | Pergunta | Possível decisão |
|---|---|---|
| U+200B em lista | A separação é necessária? | Testar preservação ou remoção |
| U+200D em emoji | Une a sequência visual? | Preservar sequência completa |
| U+00A0 entre palavras | Precisam permanecer juntas? | Preservar ou trocar por espaço |
| Controle de direção | Afeta a ordem? | Examinar contexto sem remoção global |
Fontes e verificações
- Unicode: General Punctuation · Identification of zero-width spaces, joiners and narrow no-break space
- Unicode UTS #51: Unicode Emoji · Emoji sequences, modifiers and zero-width joiners
- MDN: Intl.Segmenter · Locale-aware segmentation including graphemes