PDA

View Full Version : € Symbol in DB speichern / lesen



sim
09-12-08, 10:09
Hallo,

evtl. kann mir jemand helfen. So langsam verzweifel ich schon an diesem Problem.

Und zwar, ich habe ein Java Client-Programm das in ein Feld einer AS400 Tabelle per SQL (jt400 Treiber) Daten speichert.

Das Feld in der Tabelle (mit DDS beschrieben, Codepage der Tabelle 273) ist so definiert:


A ABLBDTA 32700 TEXT('DATEN')
A VARLEN(50)

Beim speichern eines Eurozeichens kommt in der Tabelle der Hexwert 3F an. Wenn ich diesen Satz wieder mit meinem Java Programm einlese wird das Eurozeichen jedoch nicht dargestellt.

Ich habe schon mit diversen Einstellungen beim Verbindungsaufbau herumgespeilt, u.a. CODEPAGE = xxx als Eintrag in der Properties Datei etc...

Hat aber alles nix gebracht.

Was muss ich tun damit das € Zeichen richtig gespeichert bzw angezeigt wird ????

sim

Fuerchau
09-12-08, 10:24
Entweder du verwendest CCSID 1141 (273 + €-Zeichen) oder besser noch UCS2 CCSID 13488.

In DDS ist das feld dann vom Typ G (Graphic):

A ABLBDTA 32700G TEXT('DATEN')
A VARLEN(50)
A CCSID(13488)

sim
09-12-08, 12:37
Genau das wollte ich vermeiden.

Gibts eine Möglichkeit ohne die Tabelle zu ändern ?

Fuerchau
09-12-08, 13:07
Eben nicht, das €-Zeichen wird nur sinnvoll mit CCSID 1141 oder eben 13488.
Wobei 1141 über ODBC/JDBC das auch nicht garantiert, da ja die Job-CCSID meist bei 273 oder 65535 bleibt.
Im Fall von 65535 wird dann automatisch von 037 (USA) ausgegangen und dann erst nach z.B. 1252 (ANSI) übersetzt.

Nur mit UCS2 (13488) hast du die Garantie, dass das was du schreibst auch wieder so gelesen wird.

sim
09-12-08, 13:31
Alles klar.

Hab übrigens deinen 1. Vorschlag befolgt.

Allerdings nur den Teil mit dem zusätzlichen CCSID Parameter auf Feldebene.

Hat geklappt.

Thx, sim