- Beiträge: 3
Falsche Codepage bei SQLite3
- Klaus-Dieter Kunde
- Autor
- Offline
- Benutzer
Weniger
Mehr
10 Jahre 11 Monate her #1524
von Klaus-Dieter Kunde
Falsche Codepage bei SQLite3 wurde erstellt von Klaus-Dieter Kunde
Hallo,
ich teste gerade FlowHeater V3 (Freeware 3.2.0). Dabei ist mir folgendes aufgefallen:
Beim Auswählen einer SQLite3-Datenbank als READ-Adapter wurde in den Eigenschaften des Adapters die Codepage 1252 (Ansi) eingestellt. Dies ist nicht nur für die von mir gewählte Datenbank falsch, sondern generell ungültig, da für SQLite3 nur UTF8 oder UTF16 zulässig sind.
Ein Ändern der Eigenschaft des READ-Adapters hatte bei meinen Tests keinen Effekt.
Im Anhang die von mir getestete SQLite3-Datenbank.
ich teste gerade FlowHeater V3 (Freeware 3.2.0). Dabei ist mir folgendes aufgefallen:
Beim Auswählen einer SQLite3-Datenbank als READ-Adapter wurde in den Eigenschaften des Adapters die Codepage 1252 (Ansi) eingestellt. Dies ist nicht nur für die von mir gewählte Datenbank falsch, sondern generell ungültig, da für SQLite3 nur UTF8 oder UTF16 zulässig sind.
Ein Ändern der Eigenschaft des READ-Adapters hatte bei meinen Tests keinen Effekt.
Im Anhang die von mir getestete SQLite3-Datenbank.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
10 Jahre 11 Monate her #1526
von FlowHeater-Team
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
FlowHeater-Team antwortete auf Falsche Codepage bei SQLite3
Hallo Herr Kunde,
die Codepage die Sie bei Datenbank Adaptern über die Eigenschaften ändern können wird lediglich auf der WRITE Seite für die Generierung von SQL INSERT bzw. UPDATE Skripts verwendet. Wenn Sie hier auf der WRITE Seite "SQL Skript generieren" ausgewählt haben werden die SQL Statements in eine Textdatei mit der hier gewählten Codepage geschrieben. Das eigentliche Lesen bzw. Schreiben erfolgt derzeit bei SQLite im FlowHeater immer mit UTF-8. Wenn Sie UTF-16 benötigen kann das relativ schnell implementiert werden.
Haben Sie Probleme mit der Darstellung von Sonderzeichen? Leider ist im Anhang keine Datenbank, deshalb kann ich mir das nicht genauer ansehen.
PS: Anlagen Bitte als ZIP Archiv anfügen.
die Codepage die Sie bei Datenbank Adaptern über die Eigenschaften ändern können wird lediglich auf der WRITE Seite für die Generierung von SQL INSERT bzw. UPDATE Skripts verwendet. Wenn Sie hier auf der WRITE Seite "SQL Skript generieren" ausgewählt haben werden die SQL Statements in eine Textdatei mit der hier gewählten Codepage geschrieben. Das eigentliche Lesen bzw. Schreiben erfolgt derzeit bei SQLite im FlowHeater immer mit UTF-8. Wenn Sie UTF-16 benötigen kann das relativ schnell implementiert werden.
Haben Sie Probleme mit der Darstellung von Sonderzeichen? Leider ist im Anhang keine Datenbank, deshalb kann ich mir das nicht genauer ansehen.
PS: Anlagen Bitte als ZIP Archiv anfügen.
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Klaus-Dieter Kunde
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 3
10 Jahre 11 Monate her #1528
von Klaus-Dieter Kunde
Klaus-Dieter Kunde antwortete auf Falsche Codepage bei SQLite3
Hallo,
zunächst mal Danke für die schnelle Antwort.
Ich habe tatsächlich Probleme mit der Anzeige der Umlaute.
Hier nochmal die Datenbank als ZIP-Archiv.
zunächst mal Danke für die schnelle Antwort.
Ich habe tatsächlich Probleme mit der Anzeige der Umlaute.
Hier nochmal die Datenbank als ZIP-Archiv.
Anhänge:
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
10 Jahre 11 Monate her - 10 Jahre 11 Monate her #1529
von FlowHeater-Team
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
FlowHeater-Team antwortete auf Falsche Codepage bei SQLite3
Hallo Herr Kunde,
die Daten liegen in Ihre SQLite Datenbank als Windows ANSI (Codepage 1252). Das Problem ist, das beim Lesen diese als UTF-8 interpretiert werden und somit die Umlaute zerschossen werden!
Es gibt derzeit nur eine Möglichkeit diese kaputten Daten auszulesen, leider geht das nur über eine Tabellenänderung. Bitte vorher Ihre SQLite Datenbank sichern! Des weiteren sollten Sie klären wer bzw. worüber (Programm) die falschen Daten in die SQLite Datenbank eingefügt werden/wurden.
Vorgehensweise:
C# Skript um SQLite Windows ANSI Inhalte in UNICODE umzuwandeln
Im Anhang befindet sich ein kleines Beispiel. Hier habe ich von Ihrer SQLite Tabelle lediglich die ID sowie das Feld Gruppe kopiert und in eine neue Tabelle t_rstest eingefügt.
die Daten liegen in Ihre SQLite Datenbank als Windows ANSI (Codepage 1252). Das Problem ist, das beim Lesen diese als UTF-8 interpretiert werden und somit die Umlaute zerschossen werden!
Es gibt derzeit nur eine Möglichkeit diese kaputten Daten auszulesen, leider geht das nur über eine Tabellenänderung. Bitte vorher Ihre SQLite Datenbank sichern! Des weiteren sollten Sie klären wer bzw. worüber (Programm) die falschen Daten in die SQLite Datenbank eingefügt werden/wurden.
Vorgehensweise:
- Bei jedem SQLite Feld, in dem Umlaute vorkommen können müssen Sie den Datentyp von TEXT bzw. VARCHAR auf BLOB. Am einfachsten geht das mit dem kostenlosen Tool SQLite Database Browser . Hiermit sehen Sie auch, dass auch hier die Umlaute falsch angezeigt werden. Achtung: Mit dieser Änderung können Sie auf diese Datenbank mit Ihrem bisherigen Programm danach nicht mehr zugreifen!
- Neue FlowHetaer Definition anlegen und die Tabelle erneut einlesen. Hinweis: SQLite Felder vom Typ BLOB werden als FlowHeater Datentyp RAW erkannt und per Default erst mal nicht aktiviert, hier müssen Sie nun manuell jedes Feld in der Feldauswahl aktiveren bzw. den Hacken setzen.
- Anschließend verbinden Sie die Felder der READ mit der WRITE Seite. Bei den Feldern die nun vom SQLite Typ BLOB sind müssen Sie in jedes Feld einen .NET Script Heater ziehen und unten stehenden Skript Code einfügen.
C# Skript um SQLite Windows ANSI Inhalte in UNICODE umzuwandeln
Code:
public object DoWork()
{
object o = InValues[0].GetValue();
if (o is byte[])
{
byte [] b = (byte[])o;
return Encoding.Default.GetString(b); // Encoding Default = Windows ANSI!
}
return "kein Byte[] Array";
}
Im Anhang befindet sich ein kleines Beispiel. Hier habe ich von Ihrer SQLite Tabelle lediglich die ID sowie das Feld Gruppe kopiert und in eine neue Tabelle t_rstest eingefügt.
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Anhänge:
Letzte Änderung: 10 Jahre 11 Monate her von FlowHeater-Team.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Klaus-Dieter Kunde
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 3
10 Jahre 11 Monate her #1536
von Klaus-Dieter Kunde
Klaus-Dieter Kunde antwortete auf Falsche Codepage bei SQLite3
Hallo Herr Stark,
erneut vielen Dank für die schnelle und umfassende Antwort.
Mein Problem ist damit gelöst. Außerdem habe ich einen guten Einblick in die Leistungsfähigkeit von FlowHeater, sowie den ausgezeichneten Support für das Produkt erhalten.
erneut vielen Dank für die schnelle und umfassende Antwort.
Mein Problem ist damit gelöst. Außerdem habe ich einen guten Einblick in die Leistungsfähigkeit von FlowHeater, sowie den ausgezeichneten Support für das Produkt erhalten.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
Ladezeit der Seite: 0.278 Sekunden