[PHP5 en ligne de commande]Convertir le é Dos en é Windows

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [PHP5 en ligne de commande]Convertir le é Dos en é Windows

par goeb » 11 janv. 2006, 18:08

Salut,

Je ne crois pas qu'il y ait une différence entre le é DOS et le é Windows.

Peut-etre qu'il y a une incohérence quelque part à cause des charset (character encodings) : UTF8 d'un coté et ISO-latin-1 de l'autre par exemple...

Cela dit je ne suis pas sûr que ton problème soit un problème de charset. Peux-tu nous montrer en quoi a été transformé le nom de fichier "c:\répertoire" ? (donne nous les valeurs d'octets)
par exemple en hexadécimal :
633a 5c72 e970 6572 746f 6972 650a
(le 'é' est ici 'e9', c'est un codage iso-8859-1)


Il y a sur ma page quelques explications et des exemples sur les problèmes de character encoding :
http://fhoerni.free.fr/comp/character_encoding.html

[PHP5 en ligne de commande]Convertir le é Dos en é Windows

par Tchaka » 09 janv. 2006, 20:09

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:
<?php
$dir = $_SERVER['argv'][1];
echo $dir = escapeshellcmd($dir); echo "\n";
system('ls '. $dir);  // jutilise ls avec les unixtools 
?> 
et bien j'ai en sortie j'ai le é qui est remplacé par un autre caractère

Image
Ici la commande ls fonctionne quand meme, mais dans le cadre de mes propres scripts PHP, j'appelle via la commande system() un programme C qui utilise la fonction fopen, et cette fonction n'arrive pas à ouvrir un répertoire tel que "c:\Répertoire\....".

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+