AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken IBX/UIB : Firebird mit Characterset ISO8859_1 und das Eurozeichen in Unicode-Delphi
Thema durchsuchen
Ansicht
Themen-Optionen

IBX/UIB : Firebird mit Characterset ISO8859_1 und das Eurozeichen in Unicode-Delphi

Ein Thema von squetk · begonnen am 1. Dez 2011 · letzter Beitrag vom 1. Dez 2011
Antwort Antwort
squetk

Registriert seit: 29. Aug 2004
Ort: Cottbus
118 Beiträge
 
Delphi XE2 Professional
 
#1

IBX/UIB : Firebird mit Characterset ISO8859_1 und das Eurozeichen in Unicode-Delphi

  Alt 1. Dez 2011, 03:21
Datenbank: FireBird • Version: 2.1 • Zugriff über: IBX und UIB
Hallo,

ich habe folgendes Problem:
Beim Zugriff auf eine Firebird-Datenbank mit dem Zeichensatz ISO8859_1 wird das Eurozeichen mit Delphi-XE-Compilaten (XE2 ebenso) aus Textdatenfeldern nicht ausgelesen.
Das ist mit den Datenzugriffskomponenten IBX und UIB der Fall.
Ursache bei beiden ist die Verwendung der API-Funktion MultiByteToWideChar mit Übergabe der Codepage 28591.
Diese Funktion konvertiert den Wert $80 nicht in den korrekten Wert #$20AC für das Eurozeichen im Unicode sondern macht #$0080 daraus (mit einer Null als Parameter "Codepage" klappt es).

Mir stellt sich jetzt die Frage, wie man das Problem lösen kann

Die Datenbank auf Unicode umstellen?
Die Datenzugriffskomponenten anpassen?

Oder kennt jemand eine einfachere Lösung?

Vorschläge àla "EUR" statt dem Eurozeichen helfen nicht, weil der Kunde nun mal das Eurozeichen in Notizen oder Bemerkungen oder dergleichen eintragen möchte.
  Mit Zitat antworten Zitat
Alt 1. Dez 2011, 08:15     Erstellt von larajing
Dieser Beitrag wurde von Daniel gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#2

AW: IBX/UIB : Firebird mit Characterset ISO8859_1 und das Eurozeichen in Unicode-Delp

  Alt 1. Dez 2011, 10:30
Beim Zugriff auf eine Firebird-Datenbank mit dem Zeichensatz ISO8859_1 wird das Eurozeichen mit Delphi-XE-Compilaten (XE2 ebenso) aus Textdatenfeldern nicht ausgelesen.
Ursache ist: das Eurozeichen ist in ISO 8859-1 nicht enthalten (siehe http://de.wikipedia.org/wiki/ISO_8859-1).

Als Alternative zur Unicode-Umstellung ist eine Änderung des Zeichensatzes auf ISO 8859-15 (oder eventuell Windows 1252) möglich - diese enthalten das Eurozeichen und weitere Sonderzeichen westeuropäischer Sprachen.

Die einschlägigen Sicherheitsmaßnahmen sollten natürlich getroffen werden (z.B. ein vorheriger ausgiebiger Test der Umstellung in einer Testdatenbank...)
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
squetk

Registriert seit: 29. Aug 2004
Ort: Cottbus
118 Beiträge
 
Delphi XE2 Professional
 
#3

AW: IBX/UIB : Firebird mit Characterset ISO8859_1 und das Eurozeichen in Unicode-Delp

  Alt 1. Dez 2011, 14:08
Ok, das erklärt, warum die Codierung fehlschlägt.
Unter Delphi 2009 und IBX funktioniert es übrigens, weil dort die Codepage einfach nicht unterstützt wird.
Also ein Bug, der zu einem korrekten Ergebnis führt.

Schade, ich hatte gehofft, dass es eventuell einen simplen Trick gibt, das Problem zu umschiffen.
  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 11:29 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