Anmelden

View Full Version : Euro Zeichen in Datei IFS mit native Java



Ralf_2011
27-11-12, 11:19
Hallo,

ich habe ein problem mit der Verarbeitung von einer Textdatei mit native Java auf der AS/400. Die datei enthält Eurozeichen. Leider werden die von meinem Java-Programm nicht mitgelesen. Da steht X'20' drin.
Starte ich das Programm vom Pc mit gleicher Datei aus dem IFS funktioniert es.
evtl. kann man irgendwo vorm Lesen der Datei einen Zeichnsatz angeben. Ich weiß allerdings nicht wo.
Vieleicht kann mir jemand einen Tipp geben.

Mit freundlichen Grüßen

Ralf

Ralf_2011
27-11-12, 17:11
Hallo Forum,

das Thema hat sich erledigt !

Vielen Dank

Ralf

Fuerchau
27-11-12, 17:54
Würde mich schon interessieren ob du es gelöst hast und wenn ja wie oder nur ignorierst.

Ralf_2011
28-11-12, 09:19
Hallo,

ich habe es gelöst. Im Normalfall wird eine Datei (File) mit dem Std. Zeichensatz des jeweiligen Betriebssystem eröffnet. Das ist bei Windows ein anderes(windows-1252) als bei der AS/400(???).

Man kann aber einen Zeichensatz angeben:
BufferedReader reader=new BufferedReader( new InputStreamReader( new FileInputStream(datei) , "windows-1252") );
Da alle Dateien in diesen Zeichensatz bei uns auf der AS/400 gespeichert werden, funktioniert das dann. Wenn das Ziel-CHAR-Feld in der Datenbank dann den Zeichensatz 1141 hat, wird das Eurozeich auch richtig angezeigt.

Jetzt muß ich nur noch rausbekommen, wie ich den Zeichsatz ermittel kann, unter dem die Datei im IFS gespeichert wurde. Abfragen kann man das im OPNav. Ich haffe das es da was imt jt400 gibt ?!

Mit freundlichen Grüßen

Ralf

BenderD
28-11-12, 10:08
com.ibm.as400.access.IFSFile sollte es tun...

Fuerchau
28-11-12, 11:23
Da gibt es aber ein Problem:
Wird eine IFS-Datei lokal auf der AS/400 angelegt hast du Einfluss auf die CCSID.

Wird das anlegen extern initiiert, legt die AS/400 das selber fest:
a) FTP: CHGFTPA
b) Netzfreigabe: Default-CCSID im netServer (Standard 850!)

Beim Öffnen ohne CCSID-Angabe wird die aktuelle CCSID der IFS-Datei verwendet.
Wenn im NetServer der Default auf 850 steht ist das natürlich falsch bei Windows aber richtig bei Unix/Linux.

Ralf_2011
28-11-12, 11:48
Hallo Dieter,

vielen Dank für den Tiü. Hat prima funktioniert.

Mit freundlichen Grüßen

Ralf

Ralf_2011
28-11-12, 12:20
Da gibt es aber ein Problem:
Wird eine IFS-Datei lokal auf der AS/400 angelegt hast du Einfluss auf die CCSID.

Wird das anlegen extern initiiert, legt die AS/400 das selber fest:
a) FTP: CHGFTPA
b) Netzfreigabe: Default-CCSID im netServer (Standard 850!)

Beim Öffnen ohne CCSID-Angabe wird die aktuelle CCSID der IFS-Datei verwendet.
Wenn im NetServer der Default auf 850 steht ist das natürlich falsch bei Windows aber richtig bei Unix/Linux.

Für die spezielle Anwendung werden nur Dateien von außen bereitgestellt.
bei FTP ist bei uns CCSID 819 eingestellt. Das verwenden wir jedoch bisher nicht. Der FTP-Server ist sogar gestoppt.
Beim NetServer ist 1252 eingestellt und damit dürfte das wieder passen

Vielen Dank noch mal für die Tipps

Gruß

Ralf