cs_JuS
Messages postés121Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention20 mars 2009
-
6 avril 2007 à 16:50
cs_Klephte
Messages postés22Date d'inscriptionmardi 20 mai 2003StatutMembreDernière intervention 4 janvier 2022
-
12 mai 2007 à 16:44
Bonjour,
Je travaille sur une application client-serveur (client en C#, tournant sous WinXP - serveur en C, tournant sous Solaris). J'envoie une chaine de caractères en UTF8, via socket, du client vers le serveur et j'aimerai que le serveur (en C) convertisse cette chaine UTF8 en chaine ASCII mais je ne sais pas comment faire. Je souhaiterai aussi faire l'inverse (toujours en C) c'est-à-dire convertir une chaine ASCII en une chaine UTF8.
Y aurait-il une personne qui serait susceptible de m'aider ?
Merci d'avance
-=[JuS]=-
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live
cs_JuS
Messages postés121Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention20 mars 20091 6 avril 2007 à 22:56
Cétait le cas avant mais j'ai du modifié car je code une partie de ce que j'envoie avec un algo qui donne des lettres qui ne font pas parti du code ascii. C'est pour cela qu'il faut que je fasse la communication en utf-8.
Mon client envoi un tableau de bytes qui est ensuite récupéré par le serveur, qui le retransforme en une chaine de caractères. Et c'est en faisaint cette trasformation que mes données cryptées perdent leur sens car pour le serveur au lieu d'avoir un mot de 3 lettres par exemple, il a un mot de 6 lettres (x2).
-=[JuS]=-
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_JuS
Messages postés121Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention20 mars 20091 16 avril 2007 à 11:33
En fait j'ai trouvé d'où viens le problème. Ce n'est pas une conversion que je dois faire.
C'est la fonction recv sui récupère la chaine envoyée au socket qui ne code pas en UTF 8. Est-ce possible d'utiliser la fonction recv pour de l'UTF 8 ? Si non, il y en a-t-il une autre de fonction ?
-=[JuS]=-
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live
cs_Klephte
Messages postés22Date d'inscriptionmardi 20 mai 2003StatutMembreDernière intervention 4 janvier 2022 12 mai 2007 à 16:44
salut,
Je travaille sur un sujet très proche du tiens. J'ai écrit un client en C multiplateforme (Windows et Unix) fait stocker par un serveur Unix des fichiers (et accessoirement doit les restituer). Le problème est qu'il n'est pas interdit que des clients utilisent un jeux de caractères autre que l'iso-8859-1 (problème avec les accents, ß et autres ... ) et qu'une restitution puisse se faire d'un windows vers un Unix , d'un windows Français vers un Windows US etc ....
je te conseillerai donc le projet Apache APR (http://apr.apache.org/) qui offre une solution multiplateforme de convertion tables de caractères locales <-> UTF-8.
J'ai eu beaucoup de mal à compiler la librairie iconv car le fichier apr_iconv.h n'exportait pas ses fonctions (erreur LNK2019), un petit
#ifdef __cplusplus
extern "C" {
#endif
suivi de son accolyte a corrige cela.