Hallo Jens,
Das ist leider so. Die Funktion ist zwar OK, aber der Fehler ist bei dem Zeichen + z.B. genauso. Die Decode Funktion ist leider auch nicht besser.
Habe das ganze jetzt mit StringReplaced gelöst. Allerdings weiß ich nicht, welche Zeichen noch Problem verursachen.
Also irgendwas stimmt da nicht: Nehme ich ein frisches Delphi 2010 mit der Release Version von
Indy (das dürfte doch Deine Konfiguration sein?), dann funktioniert es für das Leerzeichen:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Lines.Text := TIdURI.URLEncode('http://127.0.0.1:8801/cgi-bin/gadgetapi?cmd=SetDisplay&device=101&contentsOfDisplay=MeinText abc +');
end;
Ausgabe:
Code:
http://127.0.0.1:8801/cgi-bin/gadgetapi?cmd=SetDisplay&device=101&contentsOfDisplay=MeinText%20abc%20+
Das "+" wird aber von
Indy tatsächlich, bewußt nicht kodiert. Die Parametertrennung zu kodieren hatte früher den Benutzern zu viele Probleme gemacht.
Zu dem Bereich der gültigen Chars: Alles außerhalb US-
ASCII muß kodiert werden (siehe
http://www.ietf.org/rfc/rfc1738.txt).
Gruß,
Assertor