Anmelden

View Full Version : Umlaute ODBC auf Linux



Seiten : [1] 2

Starocotes
24-02-11, 10:39
Ich bin am Verzeifeln. Ich habe Probleme mit Umlauten unter Linux mit dem ODBC Treiber.

z.B.: Rückg. an Lieferran.. und dann kommen ganz viele Zeichen die auch noch von Aufruf zu Aufruf wechseln.

Da das aber schonmal funktioniert hat verstehe ich die Welt nicht mehr.
Die Dateien auf der iSeries haben CCSID 273.
Auf der Linux Maschine hab ich jetzt schon einiges durch aber ohne Erfolg:
CCSID in der ODBC.ini umzustellen macht alles SEHR VIEL schlimmer.
<TABLE border=0 cellPadding=3 width=600><TBODY><TR><TD class=e>LC_CTYPE </TD><TD class=v>de_DE.UTF-8 </TD></TR></TBODY></TABLE>
<TABLE border=0 cellPadding=3 width=600><TBODY><TR><TD class=e>LC_CTYPE </TD><TD class=v>de_DE.UTF-8 </TD></TR></TBODY></TABLE>

LC_CTYPE=de_DE.UTF-8
LC_ALL=de_DE.UTF-8
LANG=de_DE

In /var/lib/apache2/.iSeriesAccess/cwb_userprefs.ini

[CWB_CURRUSER\Software\IBM\Client Access Express\CurrentVersion\NLS]
CCSID-CODESET=attr_str:273,x
x hab ich probiert mit1208,ISO_8859.1,UTF-8,UNICODE und diversen anderen Dingen die alle nix gebracht haben.

Jemand ne Idee was ich übesehe?

Fuerchau
24-02-11, 11:06
Ich weiß zwar nicht, wie du die Daten auf Linux empfängst, aber so wie du sie darstellst, erhältst du die Zeichen bereits in UTF-8 dekodiert.
Sonderzeichen sind dann meist 2 Bytes lang, es ist also korrekt.
(ü = "ü")

Du musst also nur noch von UTF-8 wieder in deine aktuelle Codepage umkodieren.
Es muss da für deine Programmiersprache entsprechende Routinen geben (ggf. Java?).

Was die "vielen anderen Zeichen" angeht, so könnte es sein, dass der Inhalt deiner Variablen vor dem ODBC-Zugriff immer gelöscht werden muss. Es scheint ein Rest stehenzubleiben.

Der Sourcecode wäre nicht uninteressant.

Starocotes
24-02-11, 11:19
Der macht das auch wenn ich das direkt über isql aufrufe.
So wie ich das verstehe sollte er dann schon verstehen das er das UTF-8 zur Anzeige konvertieren muss, oder?

Ansonsten nutze ich PHP, da sollte das eigentlich mit utf8decode gehen, da kommt aber dann mal grad gar nix raus.

Starocotes
24-02-11, 11:23
HALT, iconv mit Parametern was in PHP, damit geht es.

Jetzt will ich aber nicht alles anpassen müssen (oder muss ich?)

Kann man das nicht irgendwo "fest" einstellen?

Fuerchau
24-02-11, 11:55
Vielleicht klappt ja eine Einstellung
LC_CTYPE=de_DE
also ohne UTF-8.

Starocotes
24-02-11, 11:59
Okay, hab jetzt LC_CTYPE=de_DE.ISO8859.1 gemacht und dann geht es.

Fuerchau
24-02-11, 12:01
ISO8859-1 entspricht ja auch dem ANSI-Standard.
Herzlichen Glückwunsch.

Starocotes
24-02-11, 12:17
Mir fehlt definitiv jemand mit dem ich mal bei ner Zigarette über sowas diskutieren kann (da ich nicht mehr Rauche ist das auch besser so).

Danke für den Reflektor Dienst!

Fuerchau
24-02-11, 12:53
Ich lass mir das Rauchen auch nicht nehmen :cool: !
Bitte, gerne geschehen.

Starocotes
07-10-14, 12:45
So, muss das doch nochmal vorholen, weil ich jetzt irgendwie das umgekehrte Problem habe.

Der Linux Server läuft komplett unter UTF-8.

Von der AS/400 kommen die Daten aber in ISO8859-1, das möchte ich aber auch gerne nach UTF-8 umstellen. Wie?

CCSID in der odbc.ini steht auf 1208 LC_CTYPE auf de_DE.UTF-8, was kann ich sonst noch tun?