Utf8Encode und Uf8ToString sind deine Freunde, wenn du die Konvertierung selbst machen willst.
Ansonsten (und das empfehle ich

) kannst du ein custom TEncoding erstellen, in dem du keine Preamble zurücklieferst:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| TMyEncoding = class(TUTF8Encoding) public function GetPreamble: TBytes; override; end;
..
function TMyEncoding.GetPreamble: TBytes; begin Result := TBytes.Create(); end; |
Dieses kannst du einfach an SaveToFile übergeben, das sollte gehen, habs nicht getestet.
Und als Notlösung könntest du in einen TMemoryStream speichern und ab dem vierten Byte (nach dem BOM) in einen TFileStream kopieren.