AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Umlaute in UTF8: Äthiopien statt Äthiopien
Thema durchsuchen
Ansicht
Themen-Optionen

Umlaute in UTF8: Äthiopien statt Äthiopien

Ein Thema von Perlsau · begonnen am 20. Jun 2012 · letzter Beitrag vom 23. Jun 2012
Antwort Antwort
Seite 1 von 2  1 2      
Perlsau
(Gast)

n/a Beiträge
 
#1

Umlaute in UTF8: Äthiopien statt Äthiopien

  Alt 20. Jun 2012, 09:11
Datenbank: Firebird • Version: 2.5 • Zugriff über: FibPlus 6.9.6 Release for 2009
Hallo Firebird-Spezialisten,

in meiner Datenbank sind alle VarChars, Chars und Text-Blobs mit UTF8 codiert. Die Darstellung in DB-Grid in meiner Delphi-Form ist nicht zu beanstanden, alles korrekt, auch die Umlaute – bis auf eine Sache, für die ich ein klein wenig ausholen muß:

Es gibt zwei Tabellen:
Code:
CREATE TABLE LAND (
    IDX_LAND INTEGER NOT NULL,
    LAND     VARCHAR(100) DEFAULT '_Unbekannt' NOT NULL,
    ISOCODE  VARCHAR(2),
    VORWAHL  VARCHAR(10),
    KFZ      VARCHAR(3)
);
und
Code:
CREATE TABLE WAEHRUNG (
    IDX_WAEHRUNG INTEGER NOT NULL,
    NAME         VARCHAR(100) DEFAULT '_Unbekannt' NOT NULL,
    SUB_NAME     VARCHAR(20),
    EINTEILUNG   INTEGER,
    KUERZEL      VARCHAR(10),
    ZEICHEN      CHAR(1),
    LAND         INTEGER DEFAULT 0 NOT NULL,
    W_KURS       NUMERIC(15,5) DEFAULT 0 NOT NULL,
    KURS_DATUM   DATE,
    ISO_4217     VARCHAR(3),
    AKTUELL      FIB$BOOLEAN /* FIB$BOOLEAN = SMALLINT DEFAULT 0 NOT NULL CHECK (VALUE IN (0,1)) */,
    BESCHREIBUNG BLOB SUB_TYPE 0 SEGMENT SIZE 80
);
Um in meinem DB-Grid die Tabelle Währung inkl. des mit der Tabelle Land verknüpften Feldes Land anzeigen zu lassen, habe ich im Währungs-Dataset ein Lookup-Feld erstellt. Nun werden Umlaute in diesem Lookup-Feld nicht richtig dargestellt. Mir ist nicht ganz klar, ob das an der Datenbank, an der Zugriffskomponente oder an meiner geringen Erfahrung mit Unicode liegt (ich würde ja mal spontan auf Letzteres tippen ...).
Angehängte Grafiken
Dateityp: jpg Umlaute.jpg (43,5 KB, 42x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Umlaute in UTF8: Äthiopien statt Äthiopien

  Alt 20. Jun 2012, 09:38
Hallo,

wenn ich nicht ganz falsch bin, kann man in UTF8 das Ä in zwei weisen darstellen. Es gibt einmal das Ä und einmal ein A mit dem Folgezeichen "zwei Hochpunkte". Aber das nur am Rande.

Hast du schon mal versucht mit einem anderen Programm auf die Datenbank zu zugreifen - z.B. IBExpert o.ä.? Zeigen diese es auch so an? Die DB is ja wie Papier - also geduldig Sprich, wenn du rein schreibst und ausließt können sich Unicode-Probleme kompensieren.

Und wie sieht die Deklaration der Default-Chars in Create-Script der Datenbank aus?

Evtl. musst du aber auch irgendwo bei den Delphi-Komponenten explizit sagen, dass es sich um eine UTF8-Kodierte DB handelt.

Das alles nur mal so ins blaue.

Gruß, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#3

AW: Umlaute in UTF8: Äthiopien statt Äthiopien

  Alt 20. Jun 2012, 09:59
Hallo,

wenn ich nicht ganz falsch bin, kann man in UTF8 das Ä in zwei weisen darstellen. Es gibt einmal das Ä und einmal ein A mit dem Folgezeichen "zwei Hochpunkte". Aber das nur am Rande.
Moin Chris, das wußte ich als Unicode-Anfänger natürlich noch nicht. Danke.

Hast du schon mal versucht mit einem anderen Programm auf die Datenbank zu zugreifen - z.B. IBExpert o.ä.? Zeigen diese es auch so an? Die DB is ja wie Papier - also geduldig Sprich, wenn du rein schreibst und ausließt können sich Unicode-Probleme kompensieren.
IBExpert zeigt alles einwandfrei an. Auch ein TDBGrid zeigt die Länder einwandfrei an. Nur beim Abfragen via Lookupfeld werden Umlaute falsch dargestellt, wie du am Bild im Eingangspost sehen kannst.

Und wie sieht die Deklaration der Default-Chars in Create-Script der Datenbank aus?
Zeichensatz = UTF8 / Schriftart = DEFAULT_CHARSET
Auch bei Schriftart = ANSI_CHARSET stimmt die Darstellung im Lookup-Feld nicht.

Evtl. musst du aber auch irgendwo bei den Delphi-Komponenten explizit sagen, dass es sich um eine UTF8-Kodierte DB handelt.
Aber ja, das ist von Anfang an gesetzt: DB_Main.ConnectParams.CharSet := 'UTF8'; Die Länder werde im Länder-Grid korrekt angezeigt, wie du unten in der Grafik sehen kannst.

Naja, vielleicht komm ich ja noch drauf im Laufe des Tages ...
Angehängte Grafiken
Dateityp: jpg Länder.jpg (25,8 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#4

AW: Umlaute in UTF8: Äthiopien statt Äthiopien

  Alt 20. Jun 2012, 10:01
Bemerkenswerter finde ich, dass die Darstellung in der Auswahlliste der ComboBox richtig ist, im Editfeld hingegen falsch
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#5

AW: Umlaute in UTF8: Äthiopien statt Äthiopien

  Alt 20. Jun 2012, 10:03
Bemerkenswerter finde ich, dass die Darstellung in der Auswahlliste der ComboBox richtig ist, im Editfeld hingegen falsch
Das ist es in der Tat ...

Auch mit anderen Sonderzeichen: Aus Costa-Rica-Colón wird Costa-Rica-Colón

Geändert von Perlsau (20. Jun 2012 um 10:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#6

AW: Umlaute in UTF8: Äthiopien statt Äthiopien

  Alt 20. Jun 2012, 10:23
Für mich sieht das nach einem Bug in TDBLookupCombobox aus. Möglicherweise existiert dazu bereits ein QC-Eintrag, müsste man mal recherchieren.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#7

AW: Umlaute in UTF8: Äthiopien statt Äthiopien

  Alt 20. Jun 2012, 11:12
... Nun werden Umlaute in diesem Lookup-Feld nicht richtig dargestellt ...
HEUREKA!
Problem gelöst!!!
Kurzerhand:
Delphi-Quellcode:
//DB_Main.ConnectParams.CharSet := 'UTF8';
DB_Main.ConnectParams.CharSet := 'ISO8859_1';
Wie ich vorgegangen bin?

1. Google nach Firebird+utf8+Delphi+Dbgrid suchen lassen
2. Gleich der erste Eintrag brachte diesen Thread.
3. Umgestellt, gestartet und funktioniert.
Angehängte Grafiken
Dateityp: jpg Gelöst.jpg (81,9 KB, 18x aufgerufen)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#8

AW: Umlaute in UTF8: Äthiopien statt Äthiopien

  Alt 20. Jun 2012, 11:47
HEUREKA!Problem gelöst!!!
Nein, doch nicht gelöst: eine Abfrage, nachdem die Verbindung zur DB hergestellt ist, ergibt: keine Unicode-Verbindung
IF DB_Main.IsUnicodeConnect THEN ShowMessage('Unicode-Verbindung'); War also doch nur eine Scheinlösung ...
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#9

AW: Umlaute in UTF8: Äthiopien statt Äthiopien

  Alt 20. Jun 2012, 14:45
Ich tippe nun ganz entschlossen auf einen Bug in meiner alten FibPlus-Version. Bei Devrace steht nämlich zu lesen:
"By default in Delphi 2009-2010 unicode fields are mapped to TFIBWideStringField objects. This improvement was made because TStringField cannot be processed correctly in MIDAS applications."

Aber so richtig verstehe ich das nicht, das gebe ich ganz offen zu. Immerhin hab ich aber jetzt herausgefunden, daß meine Datenbank, wenn man sie mit DbExpress (geht leider nicht mit meiner Delphi-Version) anspricht, diesen Fehler nicht zeigt. Das linke Bild hat mir ein freundlicher XE2-Besitzer "geschossen", nachhdem er mit meiner DB kurz nachgebaut hatte, was bei mir Probleme macht. Das Feld Währung in der linken Tabelle (LAND) ist ein Look-Up-Feld, definiert im ClientDataset. Bei mir sieht das dagegen noch immer so aus wie im Bild rechts.
Angehängte Grafiken
Dateityp: jpg ToFrank.jpg (76,9 KB, 20x aufgerufen)
Dateityp: jpg Mist.jpg (112,6 KB, 17x aufgerufen)

Geändert von Perlsau (20. Jun 2012 um 14:48 Uhr)
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#10

AW: Umlaute in UTF8: Äthiopien statt Äthiopien

  Alt 20. Jun 2012, 15:36
Hallo Frank,

ich glaube du verweist auf den 6.9.9 ChangeLog? Darin sind noch ein paar weitere Bugs als gefixt gekennzeichnet, die mit Unicode zu tun haben. Sofern du Zugriff auf eine neuere FIBPlus Version hast, würde ich mal ein Upgrade versuchen, bevor du in eine andere Richtung siehst. Ich verwende selbst FIBPlus nicht, aber hatte immer wieder mal über Probleme mit Unicode gelesen und es wurden in diesem Bereich mit jedem Release Stabilisierungen vorgenommen.

lg,
Thomas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz