7 votes

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

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

La première chaîne a été copiée depuis Gmail et la deuxième a été simplement tapée à la main.

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

description de l'image ici

Lorsque je sélectionne les deux chaînes simultanément dans Sublime Text2, je peux voir qu'il y a un espace supplémentaire sélectionné après la première chaîne.

description de l'image ici

J'ai activé "Afficher tous les caractères" dans Notepad++ mais je ne vois rien de différent entre la première et la deuxième chaîne.

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

Est-ce que quelqu'un pourrait s'il vous plaît me conseiller sur la façon de supprimer le caractère invisible supplémentaire et d'où il vient ?

3voto

fakedad Points 374

Sur la base de 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 insécable. Les espaces insécables sont utilisés pour indiquer à un programme affichant du texte où il peut "sûrement" couper une ligne lorsque le texte ne contient pas visiblement d'espaces. Comme vous l'avez copié depuis Gmail, il semble probable que cela provienne d'un e-mail utilisant du HTML pour formater le texte.

Comment vous pouvez procéder pour supprimer le caractère supplémentaire peut dépendre de votre système. Ce plugin de visionneuse hexadécimale pour Sublime Text semble prometteur car il propose quelques fonctionnalités de recherche, mais il ne mentionne pas explicitement la recherche par chaîne hexadécimale ou le remplacement. Comme vous utilisez Notepad++, je suppose que vous êtes sur Windows. XVI32 vous permettra de rechercher et remplacer des chaînes hexadécimales 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 hexadécimale dans un fichier en utilisant le processus décrit dans ce post.

En tout état de cause, la chaîne hexadécimale que vous chercheriez à trouver et remplacer serait E2 80 8B.

3voto

Mbo42 Points 176

Cela a fonctionné pour moi dans sublime 3 sans utiliser un éditeur hexadécimal.
En utilisant la recherche et le remplacement normaux.

  • Ouvrez la boîte de dialogue de remplacement (Ctr + H)
  • Entrez le caractère Unicode U200B dans 'Trouver quoi' (*Voir ci-dessous pour des astuces)
  • Laissez le champ 'Remplacer par' vide
  • Remplacez tout

/* Pour mettre le caractère Unicode à l'origine, utilisez la méthode de votre système d'exploitation.

  • Windows - Maintenez Alt et tapez le code Unicode
  • Linux - Ctrl + Maj + u, sans relâcher Ctrl et Maj, tapez le code
  • Sublime sous Linux - Comme pour Linux sauf que c'est Ctrl + Alt + Maj. (Sublime 3 lie Ctrl + Maj + u pour 'annulation douce')

Aussi, si vous savez où se trouve le caractère dans sublime, vous pouvez simplement le sélectionner avec Shift + Flèche, vous le saurez car le curseur ne bouge pas, il devient juste un peu plus épais :-)

Composition Unicode dans Sublime Text

0voto

Fell Man Points 11

Vous pouvez également utiliser hexdump -C pour voir les caractères qui sont étranges. Vérifiez les caractères qui sont marqués avec .(point) là où il devrait y avoir un espace.

entrez la description de l'image ici

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X