IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Encodage URL en C


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    débutant c++
    Inscrit en
    Août 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : débutant c++

    Informations forums :
    Inscription : Août 2015
    Messages : 15
    Points : 14
    Points
    14
    Par défaut Encodage URL en C
    Bonjour,

    dans le projet que je développe actuellement je parse de l'HTML dans mon C pour arduino.
    Tout va bien sauf sur un point :
    lorsque le récupère une URL via un form au lieu d'avoir une adresse du type "http://test/test", je récupère ceci : http%3A%2F%2Ftest%2Ftest

    Habituellement c'est la fonction php "rawurlencode" qui à la tache de faire la conversion.
    Je n'ai pas la possibilité d'installer php sur mon arduino donc ma question est existe-t-il une fonction en C qui ferait le même travail que "rawurlencode" ?

    je vous remercie par avance.

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 451
    Points : 43 097
    Points
    43 097
    Par défaut
    Il te faut créer ta propre fonction.

    Tu peux regarder ceci :
    http://www.developpez.net/forums/d47...-strreplace-c/
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Membre à l'essai
    Homme Profil pro
    débutant c++
    Inscrit en
    Août 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : débutant c++

    Informations forums :
    Inscription : Août 2015
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Dommage... c'est précisément ce que je souhaitais éviter.
    Je supposais (à tord visiblement) que pour un langage aussi répandu, le problème aurait déjà été rencontré et résolu.

    Merci beaucoup pour le lien.

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Une bibliothèque comme curl, qui sert de client HTTP, a probablement ça. Il en existe probablement une version pour Arduino.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 451
    Points : 43 097
    Points
    43 097
    Par défaut
    Et il doit exister d'autres bibliothèques connues permettant ceci. Mais créer un str_replace, c'est pas très compliqué.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  6. #6
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Il semble y en avoir un ICI, mais j'ai pas testé, tu peux sans doute l'utiliser... ou alors t'en inspirer.

    Une autre lib trouvée, mais en cherchant ça semble exister !
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  7. #7
    Membre à l'essai
    Homme Profil pro
    débutant c++
    Inscrit en
    Août 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : débutant c++

    Informations forums :
    Inscription : Août 2015
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Je vous remercie beaucoup pour ces éléments qui vont me permettre d'atteindre mes objectifs.

  8. #8
    Membre à l'essai
    Homme Profil pro
    débutant c++
    Inscrit en
    Août 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : débutant c++

    Informations forums :
    Inscription : Août 2015
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Effectivement un str.replace();, convient parfaitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
      ReqWeb.replace("+", " ");      
      ReqWeb.replace("%21", "!");  
      ReqWeb.replace("%22", "");  
      ReqWeb.replace("%23", "#");
      ReqWeb.replace("%24", "$");
      ReqWeb.replace("%25", "%");  
      ReqWeb.replace("%26", "&");
      ReqWeb.replace("%27", "'");  
      ReqWeb.replace("%28", "(");
      ReqWeb.replace("%29", ")");
      ReqWeb.replace("%2A", "*");
      ReqWeb.replace("%2B", "+");  
      ReqWeb.replace("%2C", ",");  
      ReqWeb.replace("%2F", "/");   
      ReqWeb.replace("%3A", ":");    
      ReqWeb.replace("%3B", ";");  
      ReqWeb.replace("%3C", "<");  
      ReqWeb.replace("%3D", "=");  
      ReqWeb.replace("%3E", ">");
      ReqWeb.replace("%3F", "?");  
      ReqWeb.replace("%40", "@");
    Merci à tous

  9. #9
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Vu qu'apparemment en fait tu es en C++, il y a quand même beaucoup plus économique en performance, un truc du genre:
    Code C++03 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    int parseHexDigit(char c)
    {
    	if(c >= '0' && c <= '9')
    		return c - '0';
    	if(c >= 'a' && c <= 'f')
    		return c - 'a' + 10;
    	if(c >= 'A' && c <= 'F')
    		return c - 'A' + 10;
    	throw std::exception("Invalid hex digit");
    }
     
    string UrlDecode(string const &s)
    {
    	string ret;
    	ret.reserve(s.length());
    	for(size_t i=0 ; i<s.length() ; i++)
    	{
    		char c = s[i];
    		if(c == '%')
    		{
    			int charValue = 0;
    			//Lecture premier chiffre
    			++i;
    			charValue += parseHexDigit(s.at(i)); //Lancera exception en cas de problème
    			//Lecture second chiffre
    			charValue <<= 16;
    			++i;
    			charValue += parseHexDigit(s.at(i)); //Lancera exception en cas de problème
     
    			ret.push_back((char)charValue);
    		}
    		else
    			ret.push_back(c);
    	}
    	return ret;
    }
    Je préviens, ce n'est ni testé, ni compilé. Mais c'est l'idée générale.

    PS: La même chose peut facilement être faite en C.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    Membre à l'essai
    Homme Profil pro
    débutant c++
    Inscrit en
    Août 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : débutant c++

    Informations forums :
    Inscription : Août 2015
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Je te remercie pour cette approche, mais si elle est probablement plus performante, elle est moins simple, et à mon niveau cela a son importance.
    Mais promis, je l'étudierai avec soins.
    Pour ce qui est du langage, je n'en sait trop rien, en fait personne ne se prononce sur le langage Arduino

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [URL]encodage URL
    Par dykha dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 08/11/2005, 10h39
  2. Encodage URL en ASCII
    Par thom069 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 13/10/2005, 15h10
  3. Encodage url
    Par johan_barbier dans le forum XMLRAD
    Réponses: 2
    Dernier message: 29/09/2005, 15h16
  4. [encodage url]
    Par jean-jacques varvenne dans le forum Réseau/Web
    Réponses: 2
    Dernier message: 11/05/2005, 08h20
  5. [VB6] fonction d' encodage URL en VB
    Par jeanseb dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/01/2003, 11h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo