[PHP5 en ligne de commande]Comment convertir le é Dos en é Windows?

Comment convertir le é Dos en é Windows? [PHP5 en ligne de commande] - PHP - Programmation

Marsh Posté le 09-01-2006 à 21:46:29    

Bonjour,
 
J'utilise PHP en ligne de commande sur Windows. Parmi tous mes scripts PHP, j'en ai un qui prend en paramètre un nom de fichier (avec son chemin d'accès).
Mon problème c'est que lorsque je passe en paramètre un chemin d'accès qui possède des accents (c:\Répertoire par exemple), ceux-ci sont remplacés par des caractères spéciaux, et donc ca implique que le chemin d'accès du fichier passé en paramètre est introuvable.
 
Par exemple, si je prends ce code:  

Code :
  1. <?php
  2. $dir = $_SERVER['argv'][1];
  3. echo $dir = escapeshellcmd($dir); echo "\n";
  4. system('ls '. $dir);  // jutilise ls avec les unixtools
  5. ?>


 
et bien j'ai en sortie j'ai le é qui est remplacé par un autre caractère  
http://img317.imageshack.us/img317/7126/erreurphp4qm.jpg
 
Ma question est: existe t-il une fonction qui permette de faire la conversion du "é" Dos en "é" Windows? je n'ai rien trouvé dans la documentation PHP (escapeshellarg() met des guillement, tandis que escapeshellcmd() ne traite pas les accents)
 
A+

Reply

Marsh Posté le 09-01-2006 à 21:46:29   

Reply

Marsh Posté le 10-01-2006 à 10:07:46    

ça n'a peut-être pas de lien mais quand j'utilisais la fonction "printf" en C, j'avais le même problème alors je remplaçais les "é" par " \202 ", les "è" par " \209 ", les " à " par " \205 " etc.. Le nombre correspond à la valeur ascii en décimal et ça fonctionnait.
 
L'idée serait donc de faire un str_replace avant ta fonction system:
$dir=str_replace(array("é","è","à" ),array("\202","\209","\205" ),$dir);

Reply

Marsh Posté le 10-01-2006 à 19:36:55    

Slt,
 
si, ton cas est sensiblement pareil  au mien. Aujourdh'ui j'ai essayé quelquechose qui s'est révélé efficace. J'ai modifier le codepage de mon shell avant de taper ma commande php, grace à ceci:
 

Code :
  1. mode CON CP SELECT=28591


c'est le code du latin1 et ensuite tous les é deviennent ù.  
 
Cette facon marche mais la tienne aussi remi-san (meme si je l'ai pas testé), donc voila ca pourra peut etre interesser quelqu'un.
 
++

Reply

Marsh Posté le 08-06-2012 à 15:01:11    

Ravis de voir que mes recherches google sur ledit problème me ramène des topics de 2006.
 
PHP + Windows, fatal combo.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed