Codage noms de fichier Windows et serveur FTP

Codage noms de fichier Windows et serveur FTP - C - Programmation

Marsh Posté le 29-10-2007 à 13:17:31    

Bonjour,
 
Je suis entrain de faire un petit serveur FTP tournant sous Windows.
Pour lister les fichiers dans les répertoires, j'utilise "ls" pour Windows, ça me permet d'avoir un affichage comme sur un serveur FTP sous Unix.
 
J'ai un soucis avec les dossiers et fichiers comportant des caractères accentués. Mon programme en C renvoi les caractères en sortie de "ls" vers le client FTP, sur le client les caractères ne sont pas affichés corectement, donc impossible de renvoyer au serveur le bon nom de fichier.
Je ne sais pas quel est le type de codage des caractères en sortie de ls (cp437 ?), le mieux serait de convertir les caractères en UTF-8 avant de l'envoyer au client et faire l'inverse en retour.
 
En considérant que les caractères étaient des "wide chars", j'ai essayé d'utiliser le fonction WideCharToMultiByte :
http://msdn2.microsoft.com/en-us/library/ms776420.aspx
Mais sans succès, tous les caractères sont illisibles sur le client, donc ce ne doit pas être des wide chars.
 
Je cherche donc à savoir quelle fonction je pourrais utiliser pour convertir le codage des noms de fichier, de sorte que mes clients puissent communiquer avec le serveur.
 
Merci pour votre aide! :hello:


Message édité par XK le 29-10-2007 à 13:31:12
Reply

Marsh Posté le 29-10-2007 à 13:17:31   

Reply

Marsh Posté le 29-10-2007 à 13:50:17    

Problèmes apparement résolu en convertissant le texte en sortie de ls avec la fonction OemToAinsi() avant d'envoyer les caractères au client FTP :)

Reply

Marsh Posté le 29-10-2007 à 15:14:34    

Si tu veux un bien meilleur contrôle sur les noms de fichier, je te conseille vivement d'utiliser FindFirstFile, FindNextFile et FindClose, dans leur version unicode de préférence (vu que la conversion UCS-2 => UTF-8 est assez triviale). Oem est un jeux de caractère moisi à fuir comme la peste. Le minimum acceptable étant cp1252.

Reply

Marsh Posté le 31-10-2007 à 19:19:32    

Merci pour tes conseils.
Je suis arrivé à faire la conversion ANSI/UTF-8 entre le serveur et le client. FileZilla fonctionne mieux avec UTF-8 alors que d'autres c'est plutôt ANSI. Pense tu qu'il y ai un standard? Je n'ai pas trouvé l'information dans la spécification.

Reply

Marsh Posté le 31-10-2007 à 22:02:01    

Je ne connais pas assez le protocole FTP pour te répondre. Mais si j'étais toi, je regarderais pour un moyen de transmettre l'encodage des commandes / réponses, un peu l'équivalent de "Content-Type: xyz; charset=cp1252" en HTTP. Pour éviter les prises de tête je te conseille l'UTF-8, car compatible ASCII et la conversion vers ou à partir de l'unicode est triviale.

Reply

Sujets relatifs:

Leave a Replay

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