PDA

View Full Version : convertieren csv-Datei mit polnischen Zeichensatz (UTF8)



smms
17-06-11, 09:39
Hallo zusammen,

ich habe csv-Dateien (UTF8 mit polnischen Zeichen) in einem Verzeichnis auf der I5 stehen. Diese Dateien möchte ich auf der I5 weiterverarbeiten per RPG.
Kann mir jemand sagen, wie ich aus der csv eine physische Datei mache und auch alle polnischen Zeichen lesen kann ?? :confused:

Danke im voraus !!!!!

Fuerchau
17-06-11, 11:30
Am Besten ist hier die Verwendung von Unicode.
Lege eine PF per DDS oder SQL an und definiere die Zeichenfelder per
DDS: G CCSID(13488)
SQL: GRAPHIC(nn) CCSID 13488

Beim CPYFRMIMPF gibst du dann als FROMCCSID(1208) für UTF8 an.

Per ILERPG kannst du die Daten dann ganz normal verarbeiten.
der Compiler generiert dir Variablen vom Typ C.

Willst du kein Unicode, musst du die PF mit CCSID(870) bzw 1143 anlegen.
Der CPYFRMIMPF bleibt der selbe.

Zur Laufzeit musst du deinen Job dann aber auf 870/1143 umstellen.

Bleibt dein Terminal aber auf 273/1141 kannst du die polnischen Zeichen nicht darstellen.

smms
17-06-11, 12:38
Das Erstellen der PF mit Angabe der CCSID auf Feldebene klappt. Die Felder der CSV sind mit PIPE getrennt. Muss ich dann auch mehrer Felder in der PF anlegen und wie muss ich den CPYFRMIMPF dann aufrufen?
DANKE !!

Fuerchau
17-06-11, 13:38
Je Feld der CSV ist ein Feld in der PF mit entsprechender Ausprägung (Dezimal klappt auch) anzulegen.

CPYFRMIMPF FROMSTMF('/MyFile')
TOFILE(MYPF)
FROMCCSID(1208)
RCDDLM(*ALL)
DTAFMT(*DLM)
STRDLM(*NONE)
FLDDLM('|')

müsste klappen.
Ggf. ist STRDLM anzupassen, falls Zeichen doch in Anführungszeichen stehen.

smms
20-06-11, 12:02
Leider klappt es immer noch nicht mit dem convertieren.
Beim CPYFRMIMPF bekomme ich immer den Fehler

DATENZUORDNUNGSFEHLER in Teildatei .....

und

NULLWERTE FÜR SPALTE ODER VARIABLE NICHT ZULÄSSIG

Den PF habe ich mit CCSID(1143) angelegt. Bei Anlage mit 870 wird auch kein Satz kopiert.
Was mach ich falsch ?!?!?!?!?

Fuerchau
20-06-11, 13:03
Im Joblog gibts nähere Hinweise, was den Datenzuordnungsfehler angeht.

NULL-Fehler sind leere Felder in der CSV-Datei die du mit RPLNULLVAL(*YES) ersetzen kannst.

Für polnisch ist 870/1153 (mit Euro) auf jeden Fall korrekt.
Zur Laufzeit ist es ggf. besser, den Job zusätzlich auf die selbe CCSID zu setzen.

Betrachte die CSV ggf. noch mal mit Excel.
Sind die Daten dann korrekt ?

smms
20-06-11, 14:24
Nur unter 1143 kann ich die CSV in meine Datei kopieren, aber die Zeichen sind immer noch nicht korrekt dargestellt.
Leider kann ich keine Datei anhängen, sonst könnte ich mal einen Auszug als PDF mitschicken.
:confused:

Fuerchau
20-06-11, 15:35
Dann sind die Daten wohl nicht polnisch ?!
1143 ist Finnisch und Schwedisch.

Ansonsten kannst du polnische Zeichen nur auf einem polnischen Terminal korrekt anzeigen.
Selbst wenn du dir die Daten per ODBC ansehen willst musst du die entweder per polnischem Windows laden oder in Unicode casten.

Woher weißt du also, dass die Daten nicht korrekt sind ?

Alternativ ist es vielleicht sogar besser, deine PF als Unicode zu erstellen (Feldtyp G CCSID(13488)).