• Vous êtes ici :
  • Accueil
  • >
  • Chronique du FFFE
Guillaume Legault
Guillaume Legault
23 mai 07
  • 0
  • 0

Chronique du FFFE

Vous êtes-vous déjà buté à une erreur étrange en programmant du PHP à l'aide du logiciel libre Eclipse et PHPEclipse?

Moi si, et je tiens à partager mes observations et les décrire afin de faire un peu de lumière sur ce bug obscure :

Vous commencez un projet de site Web en PHP sous Windows à l'aide d'Eclipse et PHPEclipse. Comme tout bon programmeur se souciant de la compatibilité multi plate-forme, vous prenez soin de tout régler vos paramètres d'encodage par défaut à UTF-8 avant d'entamer la production. Au moment de tester vos pages dans vos navigateurs, vous vous buter à une impasse se décrivant comme deux caractères hétéroclites apparaissant à l'écran "ÿþ" aka "FFFE". Et plus étrange encore, votre fidèle outil de travail se met à dérailler en vous affichant votre précieux code dépourvu de toute cohérence au niveau de la coloration syntaxique (syntax highlighting).

Qu'est-ce que sa signifie? Pourquoi rien ne s'affiche dans le navigateur à l'exception de ce malin duo de lettres exotiques? Et pour quelle diable raison la coloration syntaxique semble brisée?

Il est maintenant temps de vous partager l'explication rationnel que moi et mes confrères avons trouvée. Tout d'abord, une investigation approfondie du fichier PHP produisant l'erreur s'est imposée. Le fichier problématique, examiné en mode hexadécimal, révèle une suite de caractères en début de fichier: 0xFF 0xFE. Une vu en mode ASCII ne révèle pas leur présence, car ces deux caractères sont en fait un code UTF-8 indiquant le début d'un fichier UTF-8. Ceux-ci ne correspondent à aucun caractère lisible, d'où leur invisibilité consternante dans tout éditeur texte.

Il est important de noter que ces caractères n'apparraissent pas toujours, car Eclipse n'encode les fichiers en UTF-8 seulement et seulement si un caractère étendu (ex: "é", "à", etc) se trouve à l'intérieur du fichier. Donc si votre fichier ne contient de des caractères simples, vous évitez en principe le problème.

Il semblerait que la configuration Windows, Eclipse 3.2.x et PHP Eclipse n'apprécie guère ces caractères et provoque une incisitance dans la coloration syntaxique. Il se peut aussi que votre serveur Web favori (Apache muni de mod_PHP) traite maladroitement les fichiers contenant le jeux de caractères, provoquant un affichage inattendu dans votre navigateur.

Solution? Munissez-vous d'un éditeur hexadicimal (Je recommande UltraEdit-32) pour filtrer les fichiers problématiques, supprimer les deux premiers caractères de chacun.



Guess the letters and numbers
(passphrase riddle)
--
_v_
and then
/w/
and
0 chars before small E
;
'C' +3 letters
,
2 chars before E
and
Reproduire l'image ci-dessus