Ich kann zu ZEOS +
Unicode + Firebird leider nichts sagen, aber falls ZEOS TStringField anstatt TWideStringField für die Stringfelder generiert, dann liegt das Problem dort und das kann wahrscheinlich über eine Option gesteuert werden. Den ganzen Quelltext jetzt mit UTF-8 de-/encoding zu versehen ist sicher nicht im Sinne des Erfinders.
Aus $(
BDS)\source\
db\
DB.pas
Delphi-Quellcode:
function TStringField.GetAsString: string;
begin
Result := string(GetAsAnsiString);
end;