Bonjour,
Voici une "colle" qui me pourrit depuis une bonne journée :
Je travaille sous windows Vista avec WampServer 2 et dans un script php, j'utilise la fonction native :
pour récupérer et afficher sur Firefox une chaine contenant un résultat identique à l'instruction dir tapée sur l'invite de commande de dos.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $DirContents = shell_exec("dir"); echo "<br>\n ".nl2br($DirContents);
PB : je récupère pour certains caractères accentués un point d'interrogation dans un losange noir.
Précision : mon script est encodé en UTF-8, j'utilise le module mb_string avec en directive dans mon php.in :
Ce qui fait que ma config gère normalement bien l'encodage UTF-8. pour preuve, l'instruction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 mbstring.internal_encoding = UTF-8 mbstring.http_input = UTF-8 mbstring.http_output = UTF-8 mbstring.encoding_translation = On
affiche bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 echo "\n <br> Affichage d'une chaine complexe : Iñtërnâtiônàlizætiøn"; echo "\n <br> un peu d'exotisme en sus : Tдtд";
Affichage d'une chaine complexe : Iñtërnâtiônàlizætiøn
un peu d'exotisme en sus : Tдtд
d'où problème !! Mais me direz-vous, que se passe-t'il si j'utilise :
Pas dur, certains de mes losanges sont alors remplacés par un y avec un tréma et d'autres caractères comme le é est remplacé par RIEN DU TOUT.
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo "<br>\n ".nl2br(utf8_encode($DirContents));
J'ai bien essayé d'utiliser la fonction mb_convert_encoding du module mbstring mais sans succès.
Je pense qu'il faut que je sache quel est l'encodage des chaines renvoyés par shell_exec non ?
En tout cas, un grand merci à ceux qui me répondront car ce truc me rend dingue !!![]()
Partager