Delphi 2010
Indy 10.5.9.4797
Hallo,
habe da ein hoffentlich kleine Problem mit der Komponente idHTTP und den lieben Umlauten. Diese werden bei mir mit einem ? ersetzt bei der Ausgabe.
Ausgabe im folgenden Beispiel:
Delphi-Quellcode:
function StringToURLString(aUTF8String:
String):
String;
var
I: Integer;
begin
Result := '
';
for I := 1
to length(aUTF8String)
do
Result := Result + '
%' +
String(IntToHex(Ord(aUTF8String[i]),2));
end;
procedure TForm7.Button1Click(Sender: TObject);
var
Daten: TIdMultiPartFormDataStream;
Content:
string;
URL:
string;
begin
Daten := TIdMultiPartFormDataStream.Create;
try
Daten.AddFormField('
test', StringToURLString('
öäü -- ÖÄÜ'));
try
URL := Format('
%s?version=%s&test=%s', [edtHost.Text, edtVersion.Text, StringToURLString('
ÖÄÜ')]);
IdHTTP1.Request.ContentType := '
application/x-www-form-urlencoded';
//idHTTP1.Request.ContentType:= 'multipart/form-data';
//Content := UTF8ToUnicodeString(IdHTTP1.Post(URL, Daten));
Content := IdHTTP1.Post(
URL, Daten);
EmbeddedWB1.LoadFromString(Content);
except
on E:
Exception do
ShowMessage('
Fehler: ' + #13#10 + E.
Message);
end;
finally
Daten.Free;
end;
end;
Der entsprechende PHP Teil:
Code:
header('Content-Type: text/
xml');
$Entry2 = urldecode($_GET['test']); echo $Entry2; die('');
Rufe ich im Browser direkt
http://192.168.11.10/web/apiPostTest...test=%D6%C4%DC aud bekomme ich
ÖÄÜ Angezeigt. Nur die Http Komponente macht daraus eben
???
Nutze ich hingegen noch einmal URLEncode dazu dann bekomme ich im Browser folgendes
%C3%84%C3%96%C3%9C. Von der HTTP Komponente dagegen
%D6%C4%DC
Bei einem Bekannten ebenfalls D2010 und den Indies die bei Delphi im Standard kommen klappt es ohne Probleme rein mit dem URLDecode seitens PHP.
Ist da vielleicht der Wurm in der
Indy zu suchen? Bzw hat jemand schon einmal das Problem gehabt und kennt eine Lösung?