Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1459 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1279965
cervantes
Posté le 09-01-2006 à 21:46:29  profilanswer
 

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+

mood
Publicité
Posté le 09-01-2006 à 21:46:29  profilanswer
 

n°1280150
remi-san
Posté le 10-01-2006 à 10:07:46  profilanswer
 

ç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);

n°1280842
cervantes
Posté le 10-01-2006 à 19:36:55  profilanswer
 

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.
 
++

n°2145143
deadalnix
Posté le 08-06-2012 à 15:01:11  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
[curses] Retour a la ligneCompilation en ligne de commande
Retour à la ligne lors de la sauvegarde d'un fichier txt[DOS] Transformer des noms de fichiers longs en court, impossible ?
[RESOLU]Compter le nombre de ligne d'un fichier[résolu] Image de fond sur lien d'un menu "en ligne" ???
Une fonction peut-elle retourner le numéro de la ligne qui l'appelle ?probleme accent php5 avec XML/XSL
tache planifiee php sous windows 
Plus de sujets relatifs à : [PHP5 en ligne de commande]Comment convertir le é Dos en é Windows?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR