URLs in C ++ codieren / dekodieren
Kennt jemand eine gute C++ - code, der dies tut?
InformationsquelleAutor der Frage user126593 | 2008-09-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kennt jemand eine gute C++ - code, der dies tut?
InformationsquelleAutor der Frage user126593 | 2008-09-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stand ich vor der Codierung der Hälfte der dieses problem den anderen Tag. Unzufrieden mit der verfügbaren Optionen aus, und nachdem er einen Blick auf diese C-Beispielcodehabe ich beschlossen, roll meine eigenen C++ - url-encode-Funktion:
Die Umsetzung der decode-Funktion ist Links als übung für den Leser. 😛
InformationsquelleAutor der Antwort xperroni
Beantwortung meiner eigenen Frage...
libcurl hat curl_easy_escape für die Codierung.
Für die Decodierung, curl_easy_unescape
InformationsquelleAutor der Antwort user126593
nicht die beste, aber funktioniert Prima 😉
InformationsquelleAutor der Antwort
"Und" source code...
http://www.codeguru.com/cpp/cpp/string/conversions/article.php/c12759
Körper muss mindestens 30 Zeichen
InformationsquelleAutor der Antwort user126593
cpp-Netzwerkbibliothek hat Funktionen
Sie ermöglichen das Kodieren und Dekodieren von URL-strings sehr einfach.
InformationsquelleAutor der Antwort Yuriy Petrovskiy
Normalerweise das hinzufügen von'%', um den int-Wert eines char wird nicht funktionieren, wenn die Codierung, die Wert ist soll die hex-Entsprechung. e.g ' /' '%2F' nicht '%47'.
Ich denke, dies ist die beste und prägnante Lösungen für url-Codierung und-Decodierung (Nicht viel-header-Abhängigkeiten).
InformationsquelleAutor der Antwort tormuto
CGICC beinhaltet Methoden, um url-codieren und decodieren. form_urlencode und form_urldecode
InformationsquelleAutor der Antwort alanc10n
[Nekromant-Modus on]
Stolperte über diese Frage, wenn Sie war auf der Suche nach schnellen, modernen, Plattform-unabhängig und elegante Lösung. Nicht wie alle anderen von oben, cpp-Netzwerkbibliothek wären die Gewinner, aber es hat schreckliche Erinnerung Sicherheitsanfälligkeit in "decoded" - Funktion. So kam ich auf den boost-Geist-qi/karma-Lösung.
Die Verwendung von oben wie folgt:
[Nekromant-Modus off]
EDIT01: behoben, durch das zero-padding-Zeug - besonderen Dank an Hartmut Kaiser
EDIT02: Live auf CoLiRu
InformationsquelleAutor der Antwort kreuzerkrieg
Url-Codierung/Decodierung Algorithmus ist nicht schwierig.
Ich würde anfangen aus der Spezifikation:
Die Url-Codierung auf Wikipedia
Wenn Sie möchten, vorgekocht code, nur die Suche im Internet:
http://www.google.it/search?hl=it&q=Encode+Decode+URLs+in+C%2B - %2B&meta=
(ja, die Adresse ist url-kodiert)
InformationsquelleAutor der Antwort Gabriele D'Antona
Inspiriert von xperroni schrieb ich einen decoder. Danke für den Zeiger.
edit: Entfernt nicht mehr benötigte cctype und iomainip umfasst.
InformationsquelleAutor der Antwort kometen
Hinzufügen, eine follow-up-Bill ' s Empfehlung für die Verwendung von libcurl: toller Vorschlag, und zu aktualisiert werden:
nach 3 Jahren, die curl_escape Funktion ist veraltet, so dass für die zukünftige Verwendung, es ist besser curl_easy_escape.
InformationsquelleAutor der Antwort Bagelzone Ha'bonè
Landete ich auf diese Frage bei der Suche nach einer api zu decodieren url in einem win32-c++ - app. Da die Frage nicht ganz festlegen-Plattform vorausgesetzt, windows ist nicht eine schlechte Sache.
InternetCanonicalizeUrl ist die API für windows-Programme. Mehr info hier
InternetCrackUrl (hier) auch zu haben scheint flags, um anzugeben, ob decode url
InformationsquelleAutor der Antwort moonlightdock
Konnte ich nicht finden, eine URI-decode/unescape hier, dass auch decodiert 2-und 3-byte-Sequenzen. Mein Beitrag eigenen high-performance-version, die on-the-fly konvertiert die c-sting-Eingang auf einen wstring:
InformationsquelleAutor der Antwort jamacoe
Die Windows-API verfügt über die Funktionen UrlEscape/UrlUnescapeexportiert shlwapi.dll für diese Aufgabe.
InformationsquelleAutor der Antwort deltanine
Diese version ist rein C und kann Optional normalisieren die Ressource Weg. Mit C++ ist trivial:
Ausgänge:
Und die eigentliche Funktion:
InformationsquelleAutor der Antwort Johan
die saftigen bits
darauf hingewiesen, dass
als in
InformationsquelleAutor der Antwort Gabe Rainbow
Können Sie "g_uri_escape_string ()" - Funktion zur Verfügung gestellt glib.h.
https://developer.gnome.org/glib/stable/glib-URI-Functions.html
kompilieren mit:
InformationsquelleAutor der Antwort Vineet Mimrot
Andere Lösung verfügbar ist, mit Facebook ' s folly-Bibliothek :
folly::uriEscape
undfolly::uriUnescape
.InformationsquelleAutor der Antwort Dalzhim
können Sie einfach die use-Funktion AtlEscapeUrl() von atlutil.h,, gehen Sie einfach durch die Dokumentation auf, wie es zu benutzen.
InformationsquelleAutor der Antwort Pratik
Hatte, es zu tun in einem Projekt ohne Boost. So endete das schreiben meines eigenen. Ich werde nur legte es auf GitHub: https://github.com/corporateshark/LUrlParser
InformationsquelleAutor der Antwort Sergey K.
Ich weiß, die Frage bittet um eine C++ - Methode, aber für diejenigen, die es mal brauchen könnte, kam ich auf eine sehr kurze Funktion in plain C zu kodierenden Zeichenfolge. Sie nicht erstellen Sie einen neuen string, sondern es verändert das bestehende, was bedeutet, dass es müssen genügend Größe, um halten Sie die neue Zeichenfolge. Sehr einfach zu halten.
InformationsquelleAutor der Antwort Alfredo Meraz