Seite 1 von 1

Umlaute

Verfasst: 21.02.2009 19:54
von walter741
Hallo an alle

Ja, das ist heute schon meine zweite Frage.
Aber ich verzweifle.

Ich übertrage Texte von einer CSV-Datei in eine SQLite DB.
Wenn ich die Sqlite DB auslese werden zwei Kryptische Zeichen
statt der Umlaute geschrieben.

Mit HexEditor bewaffnet habe ich folgendes festgestellt.

1.Die CSV Datei beinhaltet normale Umlaute. Ein Byte für einen Umlaut.
2.In der SQL-DB wurden die Umlaute bereits mit zwei Bytes gespeichert.
3.Lese ich aus der SQLiteDB, so erhalte ich ebenfalls diese 2 Byte.

Ich vermute, das SQLite die Daten in UTF-8 abspeichert, da sich die Anzahl der Bytes pro Zeichen ändert. Ein Byte für normale Buchstaben,
und zwei Byte für Umlaute.

Als Notlösung suche ich in den ausgelesenen Strings der SQL DB
nach diesen beiden SonderBytes und ersätze sie durch
passende Umlaute:

Code: Alles auswählen

       Text1.s=GetDatabaseString(DB, 0)
           Text1=ReplaceString(Text1,Chr(0195)+Chr(0164), "ä")
           Text1=ReplaceString(Text1,Chr(0195)+Chr(0182), "ö")
           Text1=ReplaceString(Text1,Chr(0195)+Chr(0188), "ü")
           Text1=ReplaceString(Text1,Chr(0195)+Chr(0132), "Ä")
           Text1=ReplaceString(Text1,Chr(0195)+Chr(0150), "Ö")
           Text1=ReplaceString(Text1,Chr(0195)+Chr(0156), "Ü")
           Text1=ReplaceString(Text1,Chr(0195)+Chr(0159), "ß")
       SetGadgetText(#String_Zeilennummer , Text1)

Ja, es funktioniert, aber es ist doch nicht richtig?
Was sagen die Profis hierzu.
Ich habe nach 5 Std Suche aufgegeben und Frage nun Euch.

Wenn möglich, Bitte eine Antwort für DAUs. Mein Kopf platzt gleich.

Grüsse
Walter

Verfasst: 21.02.2009 20:10
von ts-soft
Es ist normal, das die Strings im UTF-8 Format gespeichert werden, darum
brauchste Dich doch normallerweise garnicht kümmern. Du erhälst den
String von der Datenbank doch in dem Format, das in den Compileroptionen
aktiviert ist, also ASCII oder UNICODE.

Ansonsten gibts noch PeekS, PokeS um da was umzuwandeln.

Verfasst: 21.02.2009 20:37
von walter741
ts-soft

Habe jetzt den Hacken bei "Unicode Executable erstellen" gesetzt.

Jetzt funktioniert es richtig.

Nette Antwort auf eine blöde Frage!

for a= 1 to 1000
Debug "Danke"
Next a

Walter

Verfasst: 21.02.2009 20:58
von ts-soft
GetDatabaseString() sollte aber auch im ASCII-Modus Umlaute korrekt
wiedergeben, oder ist das nicht der Fall?

Verfasst: 21.02.2009 20:59
von php-freak
walter741 hat geschrieben:for a= 1 to 1000
Debug "Danke"
Next a
^^Das find ich cool!

Verfasst: 21.02.2009 21:16
von Andesdaf
tausend dank eben! :mrgreen:

Verfasst: 21.02.2009 21:30
von walter741
Hallo

Den Hacken bei "Unicode Executable erstellen" hatte ich gesetzt,
aber beim falschen File.
Habe mehrere Dateien offen, und man kann die CompilerOptionen
für jede Datei separat verstellen.(auch bei den zB IncludeDateien)
Je nach dem welche Datei ich gerade im Vordergrund habe, ändere ich
auch diese CompielerOptionen. Ist etwas verwirrend.

Nach einigen Änderungen mach ich es jetzt so:

CSV-Datei einlesen mit :

Code: Alles auswählen

 EineZeile.s=ReadString(1,#PB_Ascii  )
Diesen String zerlegen und in SQLite schreiben.
In der DB ist nun der Text im UTF-8 Format. => 2Zeichen für ö oder ä

Den Hacken bei "Unicode Executable erstellen" setzen.
Aber auch beim richtigen File (Der auch gestartet wird)
Beim auslesen der SQLite DB werden die Umlaute richtig angezeigt.

lg Walter

Verfasst: 22.02.2009 14:53
von HeX0R
[ot]
Weiss eigentlich einer, warum 90% der Internetuser "Hacken" anstatt Haken schreiben?
Ist dieses dämliche Wort wirklich so abwegig?

Mich zumindest schüttelt es immer, wenn ich das lese.
[/ot]

Verfasst: 22.02.2009 15:09
von Kaeru Gaman
[ot]
ja, mir fällt es auch viel zu oft auf, ich finde es grausig.
zumal es ein umgangsprachlicher Ausdruck für "Ferse" ist.

vielleicht liegen solche Häufungen, auch von anderen merkwürdigen
Schreibweisen, einfach daran, dass man vor der Ära des Internet von
den meisten Leuten einfach nichts schriftliches zu sehen bekam.
[/ot]

Verfasst: 22.02.2009 17:57
von Andesdaf
ist heute Schrägschreibetag?