Announcement

Collapse
No announcement yet.

Delphi -> UTF8 - Stream

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Delphi -> UTF8 - Stream

    Hallo,

    ich sortiere dieses Problem einmal hier ein:

    Ich muss von einem HTTP - Server (Indy) aus eine XML- Datei versenden, die UTF8 - codiert ist.
    Die Daten / den Inhalt der XML - Datei bereite ich in einer TStringlist auf, die konkrete Aufgabe heißt also: erzeuge aus der TStringlist einen UTF8 codierten Stream für den HTTP-Responsestream.

    Ich habe dazu folgende umständliche Lösung, die zwar funktioniert, aber irgendwie häßlich aussieht. Vielleicht geht das eleganter ?

    Code:
    procedure TLResponse.SaveToStream(s: TStream);
    var res:TStringlist;
        tmpStream:TMemoryStream;
    begin
      res:=TstringList.Create;
      tmpStream:=TMemoryStream.Create;
      try
    {  Das geht nicht, das Ergebnis ist irgendwie nicht UTF8 :
        res.Text := UTF8Encode(res.Text); 
        res.SaveToStream(s);}
    
    // und das ist mein Workaround:
        res.SaveToStream(tmpStream,TEncoding.UTF8);
        tmpstream.Seek(Length(TEncoding.UTF8.GetPreamble), sofromBeginning);
        s.CopyFrom(tmpStream,tmpstream.Size - Length(TEncoding.UTF8.GetPreamble))
      finally
        tmpstream.SetSize(0);
        tmpstream.Free;
        res.free;
      end;
    end;
    Im Ergebnis (XML - Datei) möchte ich die UTF8- Präambel nicht 'drin haben, weil der Empfäger damit nichts anfangen kann (und entsprechende Zeichen 'sinnlose' darstellt).

    Ja, gibt's in Indy / Delphi eine elegantere Lösung ?
    Danke !
    Tino
    Ich habs gleich!
    ... sagte der Programmierer.
Working...
X