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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
$DirContents = shell_exec("dir"); 
echo "<br>\n ".nl2br($DirContents);
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.

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 :

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
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
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д";
affiche bien :

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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
echo "<br>\n ".nl2br(utf8_encode($DirContents));
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.

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 !!