AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

UniCode nach UTF8

Ein Thema von bvl · begonnen am 1. Sep 2020 · letzter Beitrag vom 1. Sep 2020
Antwort Antwort
bvl

Registriert seit: 9. Okt 2003
4 Beiträge
 
#1

UniCode nach UTF8

  Alt 1. Sep 2020, 10:01
Hallo zusammen, ich arbeite gerade an einem Projekt, welches Strings in eine SQLite3 Datenbank schreiben muss (Anbindung an Thunderbird Lightning).

Statt Umlauten kommen irgendwelche Sonderzeichen in Lightning. Wird wohl mit der Kodierung zu tun habe. Meine Strings liegen als Delphi-Standardstring vor (Unicode in XE2???), die SQLite DB verwendet UTF8.

Wie konvertiere ich richtig? Mein Ursprungsstring ist vom Typ String (=Unicodestring?), mein Zielstring habe ich als Typ UTF8String definiert.

Der Befehl
zielstring := UTF8Encode(ursprungsstring)

scheint irgendwie gar nichts zu tun.

Hab grad keine Idee mehr.
Bodo

Geändert von bvl ( 1. Sep 2020 um 10:05 Uhr)
  Mit Zitat antworten Zitat
HeZa

Registriert seit: 4. Nov 2004
Ort: Dortmund
182 Beiträge
 
Delphi 10 Seattle Professional
 
#2

AW: UniCode nach UTF8

  Alt 1. Sep 2020, 10:30
Welche Datenbank-Zugriffskomponenten setzt du ein?

Oftmals kann man da die Zeichensatz konvertierung einstellen, so dass sie für den Programmierer transparent ist.
  Mit Zitat antworten Zitat
bvl

Registriert seit: 9. Okt 2003
4 Beiträge
 
#3

AW: UniCode nach UTF8

  Alt 1. Sep 2020, 10:34
Welche Datenbank-Zugriffskomponenten setzt du ein?

Oftmals kann man da die Zeichensatz konvertierung einstellen, so dass sie für den Programmierer transparent ist.
Ich habe da eine freie Unit, weiss aber nicht genau welche das ist. Ist aber auch undokumentiert.
Geht über eine DLL namens SQLite3.dll.
Bodo
  Mit Zitat antworten Zitat
HeZa

Registriert seit: 4. Nov 2004
Ort: Dortmund
182 Beiträge
 
Delphi 10 Seattle Professional
 
#4

AW: UniCode nach UTF8

  Alt 1. Sep 2020, 10:57
Ich habe da eine freie Unit, weiss aber nicht genau welche das ist. Ist aber auch undokumentiert.
Wenn du noch den Namen der "freien" Unit nennst, gibt es vielleicht jemanden hier im Forum der dir helfen kann.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: UniCode nach UTF8

  Alt 1. Sep 2020, 11:03
Wenn "zielstring" ein "String" ist, dann wird implizit wieder zurück konvertiert.

AnsiString, bzw. UTF8String
$2B or not $2B
  Mit Zitat antworten Zitat
bvl

Registriert seit: 9. Okt 2003
4 Beiträge
 
#6

AW: UniCode nach UTF8

  Alt 1. Sep 2020, 11:49
Ich habe da eine freie Unit, weiss aber nicht genau welche das ist. Ist aber auch undokumentiert.
Wenn du noch den Namen der "freien" Unit nennst, gibt es vielleicht jemanden hier im Forum der dir helfen kann.
Also im Sourcecode steht "Sqlite 3 by Tim Anderson (tim@itwriting.com)"
https://www.itwriting.com/blog/?s=sqlite+3
Bodo

Geändert von bvl ( 1. Sep 2020 um 12:24 Uhr)
  Mit Zitat antworten Zitat
bvl

Registriert seit: 9. Okt 2003
4 Beiträge
 
#7

AW: UniCode nach UTF8

  Alt 1. Sep 2020, 11:50
Wenn "zielstring" ein "String" ist, dann wird implizit wieder zurück konvertiert.

AnsiString, bzw. UTF8String
zielstring ist explizit als "UTF8String" definiert. Ursprungsstring als "String".
Bodo
  Mit Zitat antworten Zitat
HeZa

Registriert seit: 4. Nov 2004
Ort: Dortmund
182 Beiträge
 
Delphi 10 Seattle Professional
 
#8

AW: UniCode nach UTF8

  Alt 1. Sep 2020, 13:39
Also im Sourcecode steht "Sqlite 3 by Tim Anderson (tim@itwriting.com)"
Die Lib gibt es als Ansi und als Unicode-Version. Welche hast du?

Hilfe: Enthält deine Unit in Zeile 13 {$H+} (* use AnsiString *) hast du die AnsiVersion.

Ich habe die Units hier runter geladen. Beide Versionen waren von 2011. Vielleicht etwas aktuelles verwenden? Aber da bin ich jetzt auch schon raus aus dem Thema. Setze weder die Unit noch Sqlite3 ein.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: UniCode nach UTF8

  Alt 1. Sep 2020, 14:41
Hilfe: Enthält deine Unit in Zeile 13 {$H+} (* use AnsiString *) hast du die AnsiVersion.
Das ist aber ein böser Hack.
Und ich denke mal der Kommentar ist "falsch", bzw. hat garnichts mit Unicode zu tun,
denn


{$H+} ist seit Jahrzehnten Standard, also ein weiteres {$H+} macht keinen Unterschied.

Turbo Pascal und Delphi 1 : String=ShortString (LongString gab es noch nicht)
{$H+} aka {$LONGSTRINGS ON} : String=LongStrings (AnsiString, bzw. seit D2009 UnicodeString)
{$H-} aka {$LONGSTRINGS OFF} : String=ShortStrings (was jetzt der Typ ShortString, sowie string[123] )

ShortString = Record
LongString = mit internem Zeiger
PS: "Long", da mehr als 255 Chars möglich


{$H} sollte seit Jahrzehnten nicht mehr verwendet werden und existiert nur zur Abwärtskompatibilität für extrem uralten Code.
http://docwiki.embarcadero.com/RADSt...rings_(Delphi)
$2B or not $2B

Geändert von himitsu ( 1. Sep 2020 um 14:46 Uhr)
  Mit Zitat antworten Zitat
HeZa

Registriert seit: 4. Nov 2004
Ort: Dortmund
182 Beiträge
 
Delphi 10 Seattle Professional
 
#10

AW: UniCode nach UTF8

  Alt 1. Sep 2020, 15:35
Das ist aber ein böser Hack.
Und ich denke mal der Kommentar ist "falsch", bzw. hat garnichts mit Unicode zu tun,
denn...
Mir ging es nur darum bvl einen Tipp zu geben wie er erkennen kann, welche Unit er hat. Die Unit unterscheidet sich in 19 weiteren Abschnitten, ob die Unicode relevant sind oder nicht muss er ohne meine Hilfe herausfinden.

Mir persönlich, wäre die Unit von 2011 zu alt und ich würde mich nach alternativen umschauen.
  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 17:27 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