#1 Le 29/02/2012, à 12:47
- KRS
[résolu]caractère espace différent de espace (espace insécable)
Un titre mystérieux que je vais tenter d'expliquer, car pour moi ça reste mystérieux.
Je suis débutant en développement et je suivais un guide Rails lorsque je me suis cassé les dents sur une erreur, après des heures à tout vérifier, je suis tombé par hasard sur le problème :
Un espace dans un fichier provoquait l'erreur. Le fait d'effacer cet espace et de le remettre (avec la touche ... espace) résout le problème. Si je fait un undo pour remettre l'ancien espace, l'erreur se reproduit.
j'ai donc 2 syntaxes visuellement identiques dans mon éditeur (gedit) mais elles sont différentes pour le programme.
pour illustrer, voici un diff de la ligne incriminée :
diff _form.html.erb _form.html.erb.ok
4c4
< <%= tag_form.text_field :name %>
---
> <%= tag_form.text_field :name %>
c'est l'espace entre "<%" et "tag_form" qui pose problème, on ne le voit pas à l'oeil nu, mais diff le détecte.
Quelqu'un as t il une explication à celà? j'ignore comment j'ai pu générer cet espace maudit...
Edit : j'ai trouvé la différence entre ces 2 espaces, l'un est un espace majuscule et l'autre un espace minuscule. Soit touche espace ou maj+touche espace ... il y a t il une utilité à ça ou on peut considérer que c'est un bug?
Dernière modification par KRS (Le 01/03/2012, à 10:41)
Hors ligne
#2 Le 29/02/2012, à 13:07
- pingouinux
Re : [résolu]caractère espace différent de espace (espace insécable)
Bonjour,
Pour voir ce que contient la ligne 4 de chacun des 2 fichiers :
sed -n '4p' _form.html.erb | xxd
sed -n '4p' _form.html.erb.ok | xxd
Hors ligne
#3 Le 29/02/2012, à 14:01
- KRS
Re : [résolu]caractère espace différent de espace (espace insécable)
sed ne me met rien de spécial en valeur :
sed -n '4p' _form.html.erb_fail
<%= tag_form.text_field :name %>
sed -n '4p' _form.html.erb
<%= tag_form.text_field :name %>
Hors ligne
#4 Le 29/02/2012, à 14:06
- pingouinux
Re : [résolu]caractère espace différent de espace (espace insécable)
Il faut mettre la commande complète, avec le xxd final.
Hors ligne
#5 Le 29/02/2012, à 14:11
- KRS
Re : [résolu]caractère espace différent de espace (espace insécable)
pardon, pas fait attention, voilà :
sed -n '4p' _form.html.erb_fail | xxd
0000000: 0909 3c25 3dc2 a074 6167 5f66 6f72 6d2e ..<%=..tag_form.
0000010: 7465 7874 5f66 6965 6c64 203a 6e61 6d65 text_field :name
0000020: 2025 3e0a %>.
sed -n '4p' _form.html.erb | xxd
0000000: 0909 3c25 3d20 7461 675f 666f 726d 2e74 ..<%= tag_form.t
0000010: 6578 745f 6669 656c 6420 3a6e 616d 6520 ext_field :name
0000020: 253e 0a %>.
Hors ligne
#6 Le 29/02/2012, à 14:15
- pingouinux
Re : [résolu]caractère espace différent de espace (espace insécable)
Il s'agit de ce caractère : <U00A0> /xc2/xa0 NO-BREAK SPACE (espace insécable)
Hors ligne
#7 Le 29/02/2012, à 14:15
- sputnick
Re : [résolu]caractère espace différent de espace (espace insécable)
Ne s'agirais t-il pas d'un espace insécable ?
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#8 Le 29/02/2012, à 14:25
- KRS
Re : [résolu]caractère espace différent de espace (espace insécable)
oui c'est bien ça, j'ai du le taper en gardant la majuscule enfoncée après le = (clavier CH_FR) Bon à savoir, je pense que ça vas sûrement encore m'arriver.
Dernière modification par KRS (Le 01/03/2012, à 10:02)
Hors ligne
#9 Le 01/03/2012, à 01:01
- HP
Re : [résolu]caractère espace différent de espace (espace insécable)
Emacs, lui, au moins, il met les espaces insécables en évidence…
cat /dev/urandom >/dev/null 2>&1 #github
Hors ligne
#10 Le 01/03/2012, à 10:40
- KRS
Re : [résolu]caractère espace différent de espace (espace insécable)
en installant le paquet Gedit-plugins j'ai trouvé le plugin Draw spaces (indicateur d'espaces en français) qui, en le configurant, permet de mettre en évidence les espaces insécables.
Problème résolu, merci à tous de votre aide.
Hors ligne