Sonderzeichen aus Interbase-DB über ODBC auslesen
am 09.06.2005 15:41:25 von alex.davidHi,
ähnliche Probleme mit Zeichensätzen wurden hier schon beschrieben,
aber meins ist a) etwas anders und b) leider mit den genannten Mitteln
nicht zu lösen.
Also ich habe eine Interbase DB V4.0 unter Linux und den Easysoft
ODBC-Treiber. Die Jungs vom Support haben mir die libgds.so ein
bißchen zurechtgebastelt, der Zugriff klappt jetzt sowohl über isql
als auch mit PHP.
Leider werden die Umlaute und Sonderzeichen nicht richtig
zurückgegeben.
Die Datenbank wurde mit Charset=3DNONE angelegt und über die BDE mit
einer dBase-Anwendung gefüllt. Dazu ist in der BDE der Zeichensatz CP
437 eingestellt.
Leider ist dBase bisher die einzige Anwendung, die die Daten auch
wieder richtig auslesen kann. Der IBAdmin z.B. scheitert bei den
Umlauten.
Die ä, ö und ü kann ich mit iconv("CP437", "ISO-8859-1", $wert)
sichtbar machen, aber beim ß hängts zur Zeit. Das Problem ist
nämlich, daß das ß auch noch die Ausgabe der nachfolgenden n Zeichen
beeinflußt, so daß zum Beispiel aus einem "Müggelschlößchenweg"
"Müggelschlög" oder "Müggelschlöenweg" wird. Manchmal steht
anstelle der fehlenden Buchstaben ein völlig fremdes Zeichen wie
(griech.) Phi oder so, je nachdem, welchen Zielzeichensatz ich iconv()
übergebe. Und um alles noch komplizierter zu machen: Gleiche
Zeichenfolgen erzeugen manchmal unterschiedliche Ergebniszeichen:
Meißner wird zu Mei%r, Fleißner wird zu FleiNer (das N hat noch eine
~ drüber)...
Im ODBC-Treiber den CHARSET auf was anderes als "NONE" stellen geht
garnicht, dann werden alle Sätze ab dem ersten mit Umlaut garnicht
mehr ausgegeben, der Treiber meldet einen Fehler bei der
Zeichen-Übersetzung.
Weiß da vielleicht jemand Rat?
Danke schonmal
Alex D.