begin process at 2012 05 30 12:23:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Autre

 > 

Winsock et les accents...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Winsock et les accents...

lundi 29 octobre 2007 à 14:08:17 | Winsock et les accents...

fredsor

Membre Club
Salut a tous,

Voila j'ai realisé un projet, celui-ci consiste à récupérer une chaine de caracteres provenant d'une servlet distante.
Bon jusque là rien de bien méchant, mes requetes HTTP fonctionne, je recupere bien ma chaine de caractere, me permettant de générer des écrans par la suite.
Mon souci est le suivant : cette chaine de caractères est fournie par un fichier txt. Ma servlet va simplement lire ce fichier, et lorsque j'appelle la requete, cela me renvoi bien le contenu. Or, si des accents sont présents, alors la requete la remplace par le signe "?".
y-aurait-il quelque chose a preciser dans la création de ma requete? J'ai essayé Accept-Charset mais ca n'a pas l'air de passer...

Voici la création de ma requete ( je preciese que je code en C en Win32 pour Windows CE) :
    strcpy(canal,"GET ");                                    // creation de la requete HTTP, methode GET
    strcat(canal,chemin);                            // chemin du fichier, genre "/ecran.txt"
    strcat(canal," HTTP/1.1\r\nHost: ");                    // type HTTP, suivi de l'adresse Host
    strcat(canal,adresseIpFichierIni);                        // adresse IP
    strcat(canal,"\r\n\r\n");                                // deux retour chariot
    memset(&sin, 0, sizeof(sin));

    sin.sin_addr.s_addr = inet_addr(adresseIp);    // adresse IP a laquelle se connecter
    sin.sin_family = AF_INET;
    sin.sin_port = htons(atoi(portFichierIni));                // port HTTP.

    connect(sock, (SOCKADDR *)&sin, sizeof(sin)                        // on se connecte sur le serveur.
    send(sock, canal, strlen(canal), 0);            // on envoie la requête HTTP.
    recv(sock, cBuffligne, sizeof(cBuffligne), 0);    // reception des donnees dans le buffer

Et donc , si en entré le fichier texte contient "Salut à cépépéfrance.com", mon buffer me renvoi "Salut ? c?c?c?france.com.

Je précise que je ne voudrais pas avoir à modifier le fichier texte en entrée...
Merci!
lundi 29 octobre 2007 à 15:45:38 | Re : Winsock et les accents...

aardman

Membre Club
Salut,
Le probleme ne vient ni de winsock ni du protocol http, mais du fait que tu n'a pas encodé l'url.
Une url ne doit en théorie contenir que des caracteres ascii, et donc cépépéfrance.com deviendrait un truc de ce genre: c%C3%A9p%C3%A9p%C3%A9france.com.


lundi 29 octobre 2007 à 16:09:13 | Re : Winsock et les accents...

fredsor

Membre Club
Euh je ne comprends pas trop aardman, excuse moi...
Mon fichier texte, je suis obligé de lui fournir avec les accents, sinon si dès le départ je mets "c%C3%A9p%C3%A9p%C3%A9france.com", alors dans le buffer je récupère exactement la même chose, à savoir "c%C3%A9p%C3%A9p%C3%A9france.com"...

De plus, je ne pense pas que ce soit dans l'url, puisque moi je créé une requete " a la main" ne contenant aucun accent, mais c'est seulement ce que je récupère qui en contient, et qui parait mal passer dans l'HTTP...

Je ne sais pas si j'ai été clair.
en fin je résume : du coté serveur j'ai un fichier contenant "cépépé". Du coté client j'emet une requete, qui appelle une servlet et lit le contenu du fichier. Ce contenu m'est renvoyé, mais quelque chose dans le tuyau fait que les é sont remplacés par des "?"
Donc j'ai pensé moi aussi à forcer avec des "%C3%A9", mais cela ne fonctionne pas mieux...
Une autre idée?
mardi 30 octobre 2007 à 08:41:11 | Re : Winsock et les accents...

fredsor

Membre Club
Re salut,

Je bloque toujours sur le probleme, et j'ai cherché du coté de l'encodage? puis-je forcer un encodage coté client lorsque je lance ma requete?
Voici la requete POST que j'utilise par ailleurs, celle ci ne m'autorise pas mieux les accents :
strcpy(canal,"POST ");                                        // methode employee
    strcat(canal,cheminFichierIni);
    strcat(canal,"?");
    strcat(canal," HTTP/1.1\r\nHost: ");                        // chemin de la servlet
    strcat(canal,adresseIpFichierIni);                // adresse du serveur   
    strcat(canal,"\r\nConnection: Close\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: ");
    strcat(canal, ConvertUnicodeToAnsi(chaineLength));            // longueur chaine renvoyee (content-length)
    strcat(canal,"\r\n\r\n");                                                // deux retours chariots
    strcat(canal,chainePostee);                                        // la chaine a renvoyer
    strcat(canal,"\r\n\r\n");   

Je fais un send puis un recv. Dois-je mettre un autre Content-Type? ou est-ce que la modification dois intervenir côté serveur? à la lecture du fichier?
Merci d'avance, là je ne vois pas...


mardi 30 octobre 2007 à 16:11:10 | Re : Winsock et les accents...

aardman

Membre Club
Salut,
J'avais pas compris que c'etait dans le contenu de ta requete.
L'encodage c'est toi qui le gere, il n'y a pas moyen de 'forcer' quoi que ce soit, il faudrait surtout savoir comment ton fichier est encodé (iso 8859-1, utf-8..).
Pour que le serveur décode bien ton texte, tu pourrait peut etre mettre un content-type: text/plain; charset="..."; avec le charset qui va bien.



Cette discussion est classée dans : fichier, requete, http, canal, sin


Répondre à ce message

Sujets en rapport avec ce message

identification dans requete http [ par albertoC ] bonjour,je ne suis pas sûr d'être sur le bon forum pour formuler ma question, mais la voilà tout de même :à partir d'un programme c++, je dois me conn Requete HTTP POST MIME - Upload de fichier [ par SuperChouquette ] Bonjour, je suis débutant et j'ai créer une fonction pour uploader un fichier sur un serveur php apache via le protocole http et le standard mime.Le p [Socket] Envoi d'image par requête http post [ par sleepersh ] Alors voilà, je viens poster ici car vous êtes sûrement ma dernière chance. Ca fait des jours que je cherche une solution à mon problème mais rien, pe Rhaaaa Requete Post http [ par fredsor ] Salut a tous, Desolé pour ce cri primaire, mais je comprends pas pourquoi ca ne marche pas...Voici ma la requete que je send : char canal[200];WSADATA Download d'un fichier http [ par fredleconte ] Bonjour, j'aimerais connaitre la requete que l'on doit donner a un serveur http pour charger un page ( en fait donwloader un fichier) et la reponse du téléchargement d'un fichier via l'url [WINSOCK] [ par MorbhAck ] Bonsoir tout le monde!j'ai un problème, j'essai de télécharger un fichier .rar avec GETet quand je veux extraire le rar il m'indique que le fichier es Recuperer contenu requete http [ par fredsor ] Bonjour, Je voudrais me connecter a mon serveur local afin de recuperer le contenu par exemple d'un fichier txt.Grace a un code trouvé sur le site, j' Socket Requette HTTP Post - Enlever le header de la réponse [ par SuperChouquette ] Bonjour, je suis débutant et à l'aide d'autres sources j'ai créer une fonction pour envoyer une requete POST à un serveur web, celle-ci fonctionne bie Probleme Winsock [ par fredsor ] Salut a vous, Je suis toujours en train de passer une appli de embedded visual c++ (donc pour Windows CE => Pocket Pc) vers DevC++ (windows "normal", Problème de lecture/écriture de fichier [ par gobelet18 ] Bonjour, à l'heure actuelle j'écris dans des fichier en mode binaire à partir d'un string récupérer de ma BD. Cet enregistrement est fait tel quel : [


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,856 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales