AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi String (Ansi/UTF16) nach UTF8
Thema durchsuchen
Ansicht
Themen-Optionen

String (Ansi/UTF16) nach UTF8

Ein Thema von xZise · begonnen am 28. Aug 2009 · letzter Beitrag vom 28. Aug 2009
Antwort Antwort
Benutzerbild von xZise
xZise

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

String (Ansi/UTF16) nach UTF8

  Alt 28. Aug 2009, 12:09
Datenbank: SQLite • Version: 3 • Zugriff über: A simple Delphi wrapper for Sqlite 3
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:
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;
MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: String (Ansi/UTF16) nach UTF8

  Alt 28. Aug 2009, 12:30
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
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

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

Re: String (Ansi/UTF16) nach UTF8

  Alt 28. Aug 2009, 12:41
Ah stimmt Er zeigt mir in der Vervollständigung aber nur WideString an ^^ aber da zeigt er ja eine Überladungen an.

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: String (Ansi/UTF16) nach UTF8

  Alt 28. Aug 2009, 12:56
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.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

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

Re: String (Ansi/UTF16) nach UTF8

  Alt 28. Aug 2009, 13:16
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
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

Re: String (Ansi/UTF16) nach UTF8

  Alt 28. Aug 2009, 13:24
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
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

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

Re: String (Ansi/UTF16) nach UTF8

  Alt 28. Aug 2009, 13:40
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
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:56 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