Problème d'accent avec Net::FTP

Problème d'accent avec Net::FTP - Perl - Programmation

Marsh Posté le 07-03-2008 à 13:41:39    

Hello à tous !
 
J'ai programmé un petit client FTP en perl en utilisant le module Net::FTP  
Je fais connecté ce client à un serveur FileZilla. Le client crée des répertoires sur le serveur, et mon problème c'est que les lettre accentuées ne passent pas !!
 
ex: Si le client crée un répertoire "problème", le répertoire aura comme nom : "problme".
 
(à priori, le problème ne vient pas du serveur car je n'ai aucun souci lorsque j'utilise un autre client FTP)
 
 
Merci de votre aide !

Reply

Marsh Posté le 07-03-2008 à 13:41:39   

Reply

Marsh Posté le 07-03-2008 à 15:10:50    

A mon avis le problème c'est que tu donne des accents UTF8 alors que le serveur attend de l'ISO8859-1, ou l'inverse. Peut-être que l'autre client FTP fait des conversions ? Essaie déjà d'envoyer des caractères accentués UTF8 puis ISO8859-1 via Net::FTP, et vois si l'un des deux charsets fonctionne.

Reply

Marsh Posté le 07-03-2008 à 17:56:30    

je ne sais pas comment changer de charsets, je ne vois rien à ce sujet dans le pod du module
 
en résumé, je me contente juste de faire ces commandes :
 
my $ftp = Net::FTP->new([monip], Debug => 0);
$ftp->login([login],[pass]);
$ftp->binary();
$ftp->mkdir("éssai" );
$ftp->quit();


Message édité par sephiburp le 07-03-2008 à 17:57:24
Reply

Marsh Posté le 07-03-2008 à 21:17:49    

Ca dépend de comment ton source perl est encodé... Essaie un truc comme ça :

my $dirname_utf8 = pack("cca*", 0xc3, 0xa9, "ssai_utf8" );
my $dirname_iso = pack("ca*", 0xe9, "ssai_iso8859-1" );
$ftp->mkdir($dirname_utf8);
$ftp->mkdir()$dirname_iso;


Et regarde si un des deux répertoires est créé correctement.


Message édité par matafan le 07-03-2008 à 21:18:13
Reply

Marsh Posté le 10-03-2008 à 17:57:44    

merci pour ton conseil matafan !
J'ai donc essayé ton code, et c'est l'essai en UTF8 qui fonctionne bien.
Donc si j'ai bien suivi, mon serveur attend de l'UTF8.
 
Maintenant vient la question : comment je fais pour que mon client envoi toujours en UTF8 ?
Parce que je me vois mal utiliser un pack à chaque fois :p

Reply

Marsh Posté le 10-03-2008 à 18:17:58    

Je viens de trouver ça :

Code :
  1. use Encode;
  2. my $string = "éssais";
  3. my $result = Encode::encode( "utf8", $string );
  4. $ftp->mkdir($result);


 
 
Ca fonctionne mais est-ce que c'est une bonne solution ? pas trop lourd ?

Reply

Sujets relatifs:

Leave a Replay

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