web-dev-qa-db-fra.com

Comment supprimer un caractère invisible supplémentaire dans un éditeur de texte

J'ai deux chaînes de 5 caractères "identiques" dans mes éditeurs de texte (Sublime Text2 | Notepad ++).

La première chaîne a été copiée de Gmail et la seconde juste typée à la main.

Lorsque je sélectionne la première chaîne, je vois 6 caractères sélectionnés. Lorsque je sélectionne la deuxième chaîne, je vois 5 caractères sélectionnés.

enter image description here

Lorsque je sélectionne les deux chaînes en texte sublime2 en même temps, je peux voir qu'il existe un espace supplémentaire sélectionné après la première chaîne.

enter image description here

J'ai activé "Afficher tous les caractères" dans le Bloc-notes ++ mais ne voyez rien de évidence différent entre la première et la deuxième chaîne.

Le fichier utilise le codage UTF-8. Et le problème est cohérent dans les deux éditeurs de texte.

Quelqu'un peut-il vous conseiller de savoir comment supprimer le caractère supplémentaire invisible et d'où cela vient?

5
BustedSanta

Basé sur la chaîne ANSI que vous avez obtenue, gffk9​, il semble que le caractère supplémentaire présent dans le texte soit un espace zéro-largeur . Les espaces zéro-largeur sont utilisés pour indiquer où un programme affichant le texte peut casser une ligne de rupture d'une ligne lorsque le texte ne contient pas de espaces de manière visible. Depuis que vous l'avez copié de Gmail, il semble probable que cela provenait d'un courrier électronique qui a utilisé HTML pour formater le texte.

Comment vous pouvez utiliser le caractère supplémentaire peut dépendre de votre système. ce plugin de visualiseur heex pour le texte sublime semble prometteur car il offre des capacités de recherche, mais elle ne mentionne pas explicitement la recherche par une chaîne hexagonale ou un remplacement. Depuis que vous utilisez NotePad ++, je suppose que vous êtes sous Windows. XVI32 vous permettra de rechercher et de remplacer des chaînes hexagonales dans un fichier.

Pour référence, si vous êtes dans un environnement de type UNIX, sed _ vous permettrait de remplacer les occurrences d'une chaîne hexagonale dans un fichier à l'aide du fichier processus décrit dans cet article .

En tout cas, la chaîne hexagonale que vous chercheriez à trouver et à remplacer serait E2 80 8B.

3
fakedad

Cela a travaillé pour moi dans Sublime 3 sans utiliser d'éditeur hexagonal.
[.____] Utiliser une recherche normale et remplacer.

  • Dialogue Open Remplacer (CTR + H)
  • entrez l'Unicode Char u200b dans 'Trouvez ce que' (* Voir ci-dessous pour les conseils)
  • laisser le "remplacer par" vide
  • Remplace tout

/ * Pour obtenir le charcuter unicode là-bas en premier lieu, utilisez votre méthode du système d'exploitation.

  • Windows - Hold Alt et tapez le code Unicode
  • Linux - Ctrl + Maj + U, sans relâcher CTRL et décalage, tapez le code
  • Sublime sous Linux - comme pour Linux, sauf son Ctrl + Alt + Shift. (Sublime 3 Liéts Ctrl + Maj + U pour 'Soft Redo')

De plus, si vous savez où le char est sublime, vous pouvez simplement le sélectionner avec Shift + flèche, vous saurez que vous l'avez parce que le curseur ne bouge pas, il s'agit simplement d'un peu plus épais :-)

Composition Unicode dans le texte sublime

3
Mbo42