Einzelnen Beitrag anzeigen

Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

Umlaute von UTF16 (?) zu UTF8 codieren

  Alt 26. Jul 2009, 14:23
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
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat