PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Umlauten bei Abfragen mit Perl an Oracle



marce
24-09-2004, 09:28
Hallo zusammen,

Umgebung: Oracle 8i (8.1.7.3), Perl 5.8.0, DBI 1.38, DBD 1.14, Solaris 8, Perl-Script aus der Shell heraus aufgerufen.

Problem: In der Datenbank (also ISO 8859-1) gespeicherte Umlaute kommen bei einer Select-Abfrage als Nicht-Umlaute heraus (ö -> o, ü ->, ...)

Wo lohnt es sich zu suchen? Könnte ein Update der DBD / DBI Abhilfe schaffen?

Umlaute in der Console an sich funktionieren. Ein print "ö" im Perl-Script liefert auch ein ö in der Console.


Danke schon mal...

Christoph
24-09-2004, 12:29
Klappt's denn in sqlplus?

marce
24-09-2004, 13:06
im sqlplus kriege ich für ä,ö,ü ein | zurück...

Christoph
24-09-2004, 18:48
im sqlplus kriege ich für ä,ö,ü ein | zurück...
Aha, dann hat das also nix mit dem Perl-DBI zu tun.
Was passiert denn wenn Du von Windows oder Linux aus mit sqlplus zugreifst? Achtung: bei Windows nicht von der DOS-Shell aus, weil die ein ganz anders Encoding verwendet.

Was pasiert denn, wenn Du in sqlplus Umlaute INSERTest und wieder SELECTierst?

Ein paar Vermutungen:
- In deiner Solaris-Umgebung ist 8bit Output in der Shell abgeschaltet, oder aber deine Solaris-Shell verwendet Unicode
- Welches Encoding ist denn in Oracle eingestellt? Da weiss ich jetzt nichts näheres zu, weil mein letzter Kontakt mit Oracle schon eine Weile her ist, aber da gab es sowohl auf der DB-Server Seite eine Konfigurationsdatei (init.ora oder so?) und auch auf der Clientseite einen SQL-Befehl.
- Die Daten kommen von WIndows-Rechnern und verwenden ein anders Encoding als Deine Solaris Umgebung?

marce
27-09-2004, 08:16
Ok, danke schon mal so weit.

Im SQL-Plus von Windows bekomme ich Umlaute zurück.

Die Daten werden über Linux Java-Applikation eingetragen - die bekommen auch die richtigen Daten zurück...

Umlaute an der Console tun prinzipiell - s.o.

In der DB ist ISO 8859-1 als Encoding eingestellt


Den Rest muss ich noch evaluieren - sobald ich Zeit dafür habe...