web-dev-qa-db-fra.com

Nettoyer les fichiers de code source des caractères invisibles

J'ai un problème bizarre: quelque part dans mon code HTML/PHP, il y a un caractère caché et invisible dont je n'arrive pas à me débarrasser. En le copiant depuis Firebug et en le convertissant, je l'ai identifié comme  ou 'Espace sans interruption de largeur nulle'. Il apparaît comme un nœud de texte non vide sur mon site Web et cause un grave problème de mise en page.

Le problème est que je ne peux pas m'en débarrasser. Je ne peux pas le voir dans mes fichiers même lorsque j'active Invisibles (d'uh). Je n'arrive pas à le trouver, aucun outil de recherche ne semble le détecter. J'ai réécrit mon code là où il pourrait être, mais il semble être quelque part plus en profondeur dans l'un des fichiers de framework.

De bons outils pour trouver des caractères par charcode dans des fichiers ou quelque chose comme ça? (Mac OS X)

31
deceze

Vous n'obtenez pas le caractère dans l'éditeur, car vous ne le trouvez pas dans les éditeurs de texte. #FEFF ou #FFFE sont appelés marques d'ordre des octets . Ils sont une invention de Microsoft pour indiquer dans un fichier Unicode, dans quel ordre les caractères multi-octets sont stockés.

Pour vous en débarrasser, dites à votre éditeur d'enregistrer le fichier soit en ANSI/ISO-8859 soit en Unicode sans BOM . Si votre éditeur ne peut pas le faire, vous devrez soit changer d'éditeur (malheureusement) ou utiliser une sorte d'outil de troncature comme, par exemple, un éditeur hexadécimal qui vous permet de voir comment le fichier ressemble vraiment .

Sur Google, il semble que TextWrangler dispose d'un mode "UTF-8, pas de nomenclature". Sinon, si vous êtes à l'aise avec le terminal, vous pouvez utiliser Vim:

:set nobomb

et enregistrez le fichier. Presto!

Les caractères sont toujours les tout premiers dans un fichier texte. Les éditeurs prenant en charge la nomenclature ne vous le montreront pas du tout.

À votre santé,

37
Boldewyn

Si vous utilisez Textmate et que le problème se trouve dans un fichier UTF-8:

  1. Ouvrez le dossier
  2. Fichier> Rouvrir avec encodage> ISO-8859-1 (Latin1)
  3. Vous devriez pouvoir voir et supprimer le premier caractère du fichier
  4. Fichier> Enregistrer
  5. Fichier> Rouvrir avec encodage> UTF8
  6. Fichier> Enregistrer

Ça marche pour moi à chaque fois.

10
Mirko

C'est un marque d'ordre des octets . Sous Mac OS X: ouvrez la fenêtre du terminal, accédez à vos sources et tapez:

grep -rn $'\xFEFF' *

Il vous montrera les numéros de ligne et les noms de fichiers contenant la nomenclature.

5
Vexatus

Je ne suis pas un utilisateur Mac, mais mon conseil général serait: quand tout le reste échoue, utilisez un éditeur hexadécimal . Très utile dans de tels cas.

Voir "Comparaison des éditeurs hexadécimaux" dans WikiPedia .

2
Craig McQueen

utilisez le bloc-notes plus plus .. il y a une option pour afficher tous les caractères

2
Umair Ahmed

vi ou vim affichera tous les caractères non EOL.

1
Matthew Scharley

Je suis presque sûr Textwrangler le fera.

EDIT: lien VersionTracker car le site Bare Bones semble être à nouveau en panne.

0
da5id