Hallo ihr,
da wir Turbo Delphi und Delphi 2009 gleichzeitig einsetzen, ist die Speicherung in einer SQLite Datenbank etwas fummelig. Anfangs haben wir die Ansistrings von TDE mittels "AnsiToUTF8" und umgekehrt kodiert. Das lief auch immer wunderbar. Aber sobald ich das unter Delphi 2009 verwende gibt das Probleme, da er mit UTF8 direkt umgehen kann.
An sich natürlich perfekt, aber sobald ich dann das in einen AnsiString umwandle gibt es Probleme. Inzwischen konnte ich das beheben, indem ich via Compilerschalter prüfe ob "
Unicode" gesetzt ist. Jetzt geht nur nicht mehr das Speichern der Daten. Und zwar habe ich einen Unicodestring (also doch UTF16 oder?) mit Umlauten. Wie kann ich nun den in einen UTF8-String (ohne BOM... den brauch ich nicht) umwandeln? Bisher steht bei mir der Code:
Delphi-Quellcode:
function TDatenbankWrapper.EncodeUTF(
const ASource:
string):
string;
begin
Result :=
{$IFDEF Unicode}UTF8Encode
{$ELSE}AnsiToUtf8
{$ENDIF}(ASource);
if Result = '
'
then
Result := ASource;
end;
Leider codiert aber UTF8Encode nicht richtig (es kommt ein
Leerstringdas gleiche heraus).
Das heißt er verwendet dann den UTF16 String, was nicht gut geht.
[edit]Selbst ein
Result := ändert daran nichts. Nur, dass der Ergebnisstring nicht leer ist. Stattdessen steht in
Result GENAU das gleiche wie in
ASource[/edit]
MfG
xZise