URL-Encode
-
Nach mehreren Stunden Suche bin ich nun doch so verzweifelt und frage hier.
Erstmal einen Auszug aus meinem Code:TMemoryStream *InStream = new TMemoryStream(); TMemoryStream *OutStream = new TMemoryStream(); strcpy(params, "var1=blubb&var2=blübb"); OutStream->Write(params, strlen(params)); IdHTTP1->Request->ContentType="application/x-www-form-urlencoded"; IdHTTP1->Post(server, OutStream, InStream); InStream->Position=0; RichEdit1->Lines->LoadFromStream(InStream);
Genaugenommen geht es um Zeile 3. Ich habe lustig bei mir ausprobiert mit einloggen, daten senden usw. bis mir aufgefallen ist, dass ich keine Umlaute bzw. Sonderzeichen übertragen kann.
Ich habe verschiedenste Funktionen gesucht und getestet (darunter URLEncode in allen Schreibweisen, verschiedenste Enconder-Komponente und auch vorgefertigte Funktionen) und keine hat mir das gebracht was ich wollte. Errors, falsch encodete Strings oder auch gar nix habe ich bekommen
Was brauche ich? Habe ich wiedermal eine einfache Kleinigkeit übersehen?
Ich danke für jede Hilfe.
-
-
Nein.
Das ist ja eine Funktion um Umlaute richtig in der Konsole auszugeben.Was ich genau suche ist:
String = "Das ist eine Straße"
UrlEncode(String)
String = "Das%20ist%20eine%20Stra%DFe"Was habe ich bereits gefunden & ausprobiert?
http://www.delphipraxis.net/post108768.html => Encodiert, aber falsch
http://www.c-plusplus.net/forum/viewtopic-var-t-is-43921-and-highlight-is-*url*encode*.html => Man muss ganze url angeben nicht nur die parameter, encodierung klappt dann trotzdem nicht wie gewünscht
http://www.c-plusplus.net/forum/viewtopic-var-p-is-1225363.html#1225363 -> genannte funktion URLEncode gibt es bei mir nichtund viele andere auch noch aber iwie geht nichts oder ich bin zu unerfahren um zu sehen, was ich falsch mache
Aus der Hilfe:
HttpServerUtility.UrlEncode-Methode (String)
Codiert eine Zeichenfolge als URL und gibt die codierte Zeichenfolge zurück.
Namespace: System.Web
Assembly: System.Web (in System.Web.dll)
SyntaxVisual C++ public: String^ UrlEncode( String^ s )
-
Yggdrasil schrieb:
...genannte funktion URLEncode gibt es bei mir nicht...
Auch nicht in der nmurl.hpp ?
Edit Zusatz:
AnsiString __fastcall URLEncode(const AnsiString InString);
mfg
kpeter
-
Hmm genannte Datei kann ich weder includen, noch habe ich die bei mir gefunden. Das heißt wohl, dass diese fehlt
Google spuckt aber auch keinen Download dazu aus. Wo kann ich die nachträglich herbekommen?
Danke
-
Liegt (eigentlich)jeder BCB-Version ab Prof. bei
(BCB-Verzeichnis ...\Include\VCL)...
-
Bin gerade im angegebenen Ordner jedoch ist die Datei nicht zu finden (wäre auch sehr verwundert wenn doch, habe eben mit der Suchen-Funktion den kompletten CodeGear ordner gescannt.)
Momentan habe ich noch die Demo-Version von dem RAD Studio 2009.
Aber daran sollte es nicht liegen, da diese bis auf die 30 Tage-Frist keinerlei Einschränkungen gegenüber dem Original haben sollte.
-
Meine aktuelle Version ist BCB6. Vielleicht gibt es diese Datei in neueren
Versionen nicht mehr. Da muss ich passen.Eine Volltextsuche hast du sicher gemacht.
mfg
kpeter
-
Jep, bin alle Dateien, die mit n beginnen sogar nochmal manuell durchgegangen. Hättest du eventuell eine Möglichkeit mir deine nmurl zukommen zu lassen, denn ich finde seltsamerweise keinerlei Downloads bei google.
/edit: Ja volltextsuche auch
-
per eMail, müsste schon bei dir sein..
Wie gesagt, BCB6.mfg
kpeter
-
Ich glaube ich kann dir aber noch keine Ruhe lassen :p
Eine Datei möchte der Compiler noch von dir:
NMConst.hpp (Zeile 15 in nmurl.hpp)Wäre nett, wenn du mir diese auch noch schicken könntest
-
Klar doch, die Hauptsache, es läuft dann anschließend
-
#include <nmurl.hpp> [...] //---Gewonnene Daten in Post einfügen postwerte = Memo2->Lines->Strings[2]+"="+ URLEncoded(edit_name->Text);
[BCC32 Fehler] Unit1.cpp(122): E2268 Aufruf der undefinierten Funktion 'URLEncoded'
Ach menno! (Ja, nmurl.hpp ist eingebunden, denn die muss es ja auch durchgehen sonst hätts nicht nach der NMConst.hpp gefragt)
Ich verstehe langsam die Welt nicht mehr
-
Die Funktion heisst auch URLEncode ohne d.
-
Jo wars auch. Das "d" ist mir zusätzlich noch reingerutscht, als ich es nochmal fürs Forum hier geschrieben habe. Das heißt: Ohne D der selbe Fehler. Im übrigen wird die Funktion in der nmurl.hpp zwar aufgerufen aber bekommt keinen Funktionscode.
-
Hast du die Indy-Packages? Da müsste der Funktionscode drinsein
-
Jep Indy ist da (damit arbeite ich ja schließlich)
Aber ich habe die Volltextsuche auch für URLEncode durchgeführt und es hat nichts gefunden.
-
Nimm mal die Komponente TNMURL, falls noch nicht probiert.
Da heisst der Funktionsaufruf anders,
Beispiel aus der Hilfe:void __fastcall TForm1::Button1Click(TObject *Sender) { NMURL1->InputString = "name=Ed Smith pass=mypassword"; Edit2->Text = NMURL1->Encode; Edit3->Text = NMURL1->Decode; }
Edit: ungetestet mit Umlauten etc
-
Ich schätze mal im Rad 2009 ist die komplette nmurl-Komponente nicht mehr drin. Dein Codebeispiel habe ich auch schon gefunden, kann ich aber nicht durchführen, weil entsprechendes Objekt fehlt.
Ich denke ich werde mir einfach eine funktion schreiben, die die Sonderzeichen und umlaute durch die entsprechenden werte ersetzt.
Ist wohl das einfachste und da die Funktion eh nicht oft im Programm gebraucht wird und vor allen dingen genug zeit da ist muss ich wohl damit leben.Trotzdem ein großes DANKE für deine Hilfe!
Wenn die Demo-Version abgelaufen ist, steige ich wieder auf etwas anderes um und da hab ich hoffentlich dann entsprechende Komponente