Einzelnen Beitrag anzeigen

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, 02: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