Datenbank: SQLite • Version: 3 • Zugriff über: A simple Delphi wrapper for Sqlite 3
String (Ansi/UTF16) nach UTF8
Hallo ihr,
SQLite verwendet ja UTF8 oder UTF16. Nun ist das beim aktuellen Wrapper den ich verwende ( http://www.itwriting.com/blog/a-simp...r-for-sqlite-3 ), so dass er soweit das gesehen habe nur UTF8 einsetzt. Jetzt möchte ich, dass wenn man jetzt die Datenbank öffnet, man einen String übergeben kann und je nach Delphi ist das dann ja ein AnsiString oder ein UnicodeString. Wie kann ich jetzt einfach sagen: String rein -> UTF8 raus Eventuell sogar auch andersherum? Oder geht das nur so:
Delphi-Quellcode:
MfG
function DecodeUTF(const ASource: UTF8String): string;
begin Result := {$IFNDEF Unicode}Utf8ToAnsi{$ENDIF}(ASource); if Result = '' then Result := ASource; end; function EncodeUTF(const ASource: string): UTF8String; begin Result := {$IFDEF Unicode}UTF8Encode{$ELSE}AnsiToUtf8{$ENDIF}(ASource); if Result = '' then Result := ASource; end; xZise |
Re: String (Ansi/UTF16) nach UTF8
Wenn du String verwendest und es in D2009/10 oder jünger verwendet wird, dann einfach UTF8Encode Und UTF8ToString, dann paßt sich das schon automatisch an
Delphi-Quellcode:
{$IF not Declared(UnicodeString)} Type UnicodeString = WideString; {$IFEND}
Procedure DecodeUTF(const ASource: UTF8String; Var S: AnsiString); Overload; begin S := Utf8ToAnsi(ASource); end; Procedure DecodeUTF(const ASource: UTF8String; Var S: UnicodeString); Overload; begin S := UTF8ToWideString(ASource); end; function EncodeUTF(const ASource: AnsiString): UTF8String; Overload; begin Result := UTF8Encode(ASource); end; function EncodeUTF(const ASource: UnicodeString): UTF8String; Overload; begin Result := UTF8Encode(ASource); end; // PS: UTF8Encode ist schon überladen, also kannst du es auch direkt nutzen |
Re: String (Ansi/UTF16) nach UTF8
Ah stimmt ;) Er zeigt mir in der Vervollständigung aber nur WideString an ^^ aber da zeigt er ja eine Überladungen an.
MfG xZise |
Re: String (Ansi/UTF16) nach UTF8
ja, die Autovervollständigung hat da eine kleine Unzulänglichkeit in ihrer Anzeige :?
ist praktisch die selbe Ursache wie hier http://www.delphipraxis.net/internal...t.php?t=158509 dadurch daß nicht auf andere überladene Funktion hingewiesen wird, kommt es halt zu solchen Problemen. |
Re: String (Ansi/UTF16) nach UTF8
Hmmm wegen deprecated:
Wenn ich einen String in einen UTF8 String umwandeln will nehme ich UTF8Encode. Aber andersherum meldet er das UTF8Decode deprecated ist. Soll man stattdessen UTF8ToString nehmen? MfG xZise |
Re: String (Ansi/UTF16) nach UTF8
jupp
abgesehn davon, wandelt UTF8Decode immer in einen WideString also am Einfachsten immer dieses und String verwenden, das past sich dann ans Delphi an UTF8Encode <= AnsiString/WideString/UnicodeString/String nach UTF8 UTF8ToString <= von UTF8 nach String (AnsiString oder ab D2009 UnicodeString) oder du gibst selber den Typen vor UTF8Encode <= AnsiString/WideString/UnicodeString/String nach UTF8 Utf8ToAnsi <= von UTF8 nach AnsiString UTF8ToWideString <= von UTF8 nach WideString UTF8ToUnicodeString <= von UTF8 nach UnicodeString |
Re: String (Ansi/UTF16) nach UTF8
Nein das ist schon gut so, dass sich das anpasst. Weil dann erspare ich mir das ganze zu gucken ob das jetzt ein Wide/AnsiString ist ;)
MfG xZise |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz