Convertir chaine ASCII en UTF8 et vice versa

cs_JuS Messages postés 121 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 20 mars 2009 - 6 avril 2007 à 16:50
cs_Klephte Messages postés 22 Date d'inscription mardi 20 mai 2003 Statut Membre Derniè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
A voir également:

7 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
6 avril 2007 à 17:14
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
6 avril 2007 à 17:18
Ah oups, sous Solaris. Là j'en sais rien.

C++ (@++)<!--
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
6 avril 2007 à 18:32
Il faut que le client envoi un stream déjà formaté ascii, c'est le plus simple. c'est dans le #using System.Text

StreamWriter Buffer = new StreamWriter(text, 
                                                             true, 
                                                             System.Text.Encoding.ASCII
                                                             taille);

Sinon je vois pas.
0
cs_JuS Messages postés 121 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 20 mars 2009 1
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
7 avril 2007 à 17:01
mbstowcs

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
cs_JuS Messages postés 121 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 20 mars 2009 1
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
0
cs_Klephte Messages postés 22 Date d'inscription mardi 20 mai 2003 Statut Membre Derniè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.
0
Rejoignez-nous