Não há uma maneira totalmente confiável de colocar uma marca invisível em um arquivo de texto. Um arquivo de texto não tem espaço para nada que não seja texto puro, afinal. Comentários (texto que não pertence ao texto principal) são uma forma de marcação.
Bytes nulos são uma má idéia não apenas porque podem ser renderizados como ^@
ou ␀
ou �
ou outras formas, mas também porque muitas ferramentas de processamento de texto sufocam nelas. Bytes nulos são um marcador de fim de string na linguagem de programação C e muitos programas o tratam como o fim de um trecho de texto (por exemplo, de uma linha, mas não necessariamente) porque eles são escritos em C ou usam bibliotecas escritas em C.
Se o seu texto estiver codificado em Unicode, você poderá usar um de seus vários caracteres de largura zero:
- U + 200B ZERO WIDTH SPACE (espaço de quebra de largura zero)
- U + 200C ZERO WIDTH NON-JOINER (um constituinte de palavra de largura zero que impede as ligaduras)
- U + 200D ZERO WIDTH JOINER (um constituinte de palavra de largura zero que força as ligaduras)
- U + 2060 WORD JOINER (um espaço sem quebra de largura zero)
Os espaços não são constituintes de palavras, os outros são. Embora nenhum desses caracteres seja renderizado visivelmente (assumindo um visualizador com suporte razoável a Unicode), isso tem um impacto ao selecionar texto, mover-se, pesquisar, etc. O espaço de quebra pode ser renderizado como uma quebra de linha.