Zur Ausgangsfrage zurück:
Aber wie bekomme ich ein korrekt UTF8-kodiertes und formatiertes JSON zusammen?
ganz einfach mit
Delphi-Quellcode:
procedure p();
var
jsonObject: TJSONObject;
begin
jsonObject := TJsonObject.Create();
jsonObject.AddPair('text', 'Straße');
Writeln( jsonObject.ToString() ); // unformatiert
WriteLn( Rest.Json.TJson.Format(jsonObject) ); // formatiert
end;
ergibt
Code:
{"text":"Straße"}
{
"text":"Straße"
}
Um davon jetzt eine UTF8 kodierte Bytefolge zu erhalten nimmt man z.B.
TEncoding.UTF8.GetBytes( json );
.
Wenn man etwas mit
Indy verschicken will, dann reicht es in der Regel den String zu verwenden und die entsprechend gewünschte Kodierung anzugeben. Das Umwandeln von dem String in die Kodierung übernehmen dann eigentlich die
Indy-Komponenten.
Nur so nebenbei erwähnt:
Das Ergebnis
wird ja auch in einem Delphi-
Unicode zurückgegeben. Ist also auch nicht UTF8 oder was auch immer vermutet.