Du Schreibst das UTF-8-BOM in die Datei und hinten drann deinen als UTF-8 kodierten Text.
Ab D2009 sollte man besser den UTF8String oder den RawByteString verwenden, anstatt dem AnsiString.
Du mußt aber aufpassen, denn die alten Pascal-Prozeduren ala WriteLn arbeiten ausschließlich mit
ANSI (auch in den neueren
Unicode-Delphis) ... UTF8 kann zwar als
ANSI behandelt werden, aber man sollte aufpassen, daß es nicht irgendwo zu einer automatischen Konvertierung kommt, bei einer Zuweisung von UTF8 an
ANSI.
Ab D2009 hätte ich eine TStringList vorgeschlagen, welcher man das Encoding mitgeben kann.
Falls alles nichts hilft, schreib den UTF8String, inkl. BOM, in einen FileStream.