Kann gut sein...wenn man sich den Quellcode von der idFTP ansieht, sind da ein paar merkwürdige Sachen mit dem Encoding...
Schickst du an den Server vorher ein "FEAT"-Command?
Da scheint
Indy dann das Default Encoding für den String-I/O-Handler auf UTF8 zu stellen:
IOHandler.DefStringEncoding := enUTF8;
hm...
Versuche doch mal, die Datei nicht über die Angabe eines Dateinamens im put-Befehl hochzuschieben, sondern mach die Datei vorher über einen TFileStream auf und übergib den an put.