Nun, erstmal würde ich statt String einen AnsiString oder besser noch einen RawByteString verwenden.
Ich versuch es demnächst mal mit einem UTF8String, der automatischen Stringumwandlung (über das kranke StringChecking) und einem auf UTF8 eingestellten
MySQL-Clienten.
(da sollte man dann theoretisch einen String/UnicodeString übergeben können und Delphi wandelt das automatisch auf UTF-8 um)
Eine manuelle Umwandlung von :Name auf ? sollte auch nicht schwer sein und sich relativ flott implementieren lassen.