Das kommt auf dich an.
Wie gesagt, es hat beides seine Vorteile und Nachteile und du kannst mit Beindem dein
Unicode speichern.
Ob nun als UTF8 oder
Unicode gepseichert ist also dir überlassen.
> UTF8String oder UnicodeString (notfalls WideString)
Wovon ich aber abrate, ist das Speichern von diesem dynamischem
String.
Für eine kurzlebige Cache ist es voll OK und vermutlich Idealer, aber für langlebigere Daten vollkommen ungeeignet, da sich der String schnell mal ändern kann, wie man an der
Ansi/
Unicode-Umstellung gesehn hat. Und dann sind die Speicher-/Auslesefunktionen nicht mehr kompatibel zum gewählten Dateiformat.
Ja, auf UCS4 können wir, so wie ich BorCodaero kenne, noch shr viele Jahrzehnte warten können (OK, auch das OS wird es so schnell noch nicht standardmäßig anbieten), aber es könnte irgendwann mal kommen ... existieren tut es ja schon.
Und das Integerdebakel, noch aus der 16/32-Bit-Umstellung bekannt, kommt ja auch demnächst auch nochmal, mit den 64 Bit ... also niemals dynamische Typen in externen Definitionen verwenden.
Dann kommt es noch darauf an, was du mit deiner Datenklasse machst ... wie gesagt, wenn du das UTF8
dort nicht zwingenst benötigst, dann würde ich String/UnicodeString empfehlen.
z.B.
Edit1.Text := Address.EMAIL;
wird bei einem UTF8String als Feld/Propery intern implizit von Delphi als
Edit1.Text := UTF8Encode(Address.EMAIL);
dargestellt.