Dynamischer Daten Import / Export

datenbank

weil Einfach - produktiver ist
Mit der Freeware Version können bis zu 10.000 Datensätze verarbeitet werden!
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
Willkommen im FlowHeater Support Forum!

Hier werden Fragen zum Umgang mit dem FlowHeater beantwortet.

THEMA: Falsche Codepage bei SQLite3

Falsche Codepage bei SQLite3 3 Jahre 2 Wochen her #1524

  • Klaus-Dieter Kunde
  • Klaus-Dieter Kundes Avatar
  • Offline
  • New Member
  • Beiträge: 3
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.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Falsche Codepage bei SQLite3 3 Jahre 2 Wochen her #1526

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1099
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.
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.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Falsche Codepage bei SQLite3 3 Jahre 2 Wochen her #1528

  • Klaus-Dieter Kunde
  • Klaus-Dieter Kundes Avatar
  • Offline
  • New Member
  • Beiträge: 3
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.

Dateianhang:

Dateiname: test.zip
Dateigröße:2 KB
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Falsche Codepage bei SQLite3 3 Jahre 2 Wochen her #1529

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1099
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! Desweiteren sollten Sie klären wer bzw. worüber (Programm) die falschen Daten in die SQLite Datenbank eingefügt werden/wurden.

Vorgehensweise:
  1. 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!
  2. 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.
  3. 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
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.

Dateianhang:

Dateiname: sqlite-bin...aute.zip
Dateigröße:4 KB
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.
Letzte Änderung: 3 Jahre 2 Wochen her von FlowHeater-Team.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Falsche Codepage bei SQLite3 3 Jahre 2 Wochen her #1536

  • Klaus-Dieter Kunde
  • Klaus-Dieter Kundes Avatar
  • Offline
  • New Member
  • Beiträge: 3
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.
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Moderatoren: FlowHeater-Team
Ladezeit der Seite: 0.083 Sekunden