Anmelden

View Full Version : RPGLE zu Java Sonderzeichenprobleme



Malte
28-02-18, 12:55
Hallo Zusammen,

Ich Probiere grad ein bisschen mit dem OpenSource Programm RPGMail herum.
https://mowyourlawn.com/RPGMail.html

Jetzt habe ich aber das Problem, das wenn ich meinen Text an das Java Programm übergebe, die Sonderzeichen nicht richtig umgesetzt werden.

Also ich gebe den Text "My first rpg email app!" mit und raus kommt "My first rpg email appÜ"

Wenn ich die Funktionen der jar-Datei über den PC also NetBeans aufrufe klappt das.

Hier ist die umsetzt funktion in den Java String


Dcl-C jStrConst 'java.lang.String';
Dcl-Proc newString;
Dcl-Pi newString Object(*java: jStrConst);
pString Char(32767) const;
End-Pi;


Dcl-S string Object(*java: jStrConst);


Dcl-Ds error likeds(Error_Info) inz;


Dcl-Pr newJavaString Object(*java: jStrConst)
extproc(*java: jStrConst:*constructor);
parm VarChar(32767) const;
End-Pr;


Dcl-Pr trimString Object(*java: jStrConst)
extproc(*java: jStrConst: 'trim');
End-Pr;


monitor;
string = newJavaString(%Trim(pString));
return trimString(string);
on-error *All;
endmon;

End-Proc;

Bei uns auf dem System ist die CCSID 1141 eingestellt.

Ich habe es auch schon mit UCS-2 versucht... aber leider mit dem gleichen Ergebnis


Dcl-Pr newJavaString Object(*java: jStrConst)
extproc(*java: jStrConst:*constructor);
parm ucs2(32767) const;
End-Pr;


Hat jemand eine Idee, wie ich die Sonderzeichen sauber übertragen bekomme?

Danke schon mal,
MfG Malte

Malte
01-03-18, 15:11
Hallo alle zusammen,

ich hab es gefunden es war ein sehr dummer Fehler.

und zwar war die CCSID vom Sourcefile des mitgelieferten Testprogramms 37 diese habe ich jetzt auf 1141 geändert und schon funktioniert das.

Mfg Malte

KingofKning
02-03-18, 08:46
Na ja,
auf so einen Fehler muß man auch erst mal kommen.

GG 4474

B.Hauser
02-03-18, 12:16
Na ja,
auf so einen Fehler muß man auch erst mal kommen.

GG 4474

Wem sagst Du das, wenn dann noch einer mit Zeichensatz Deutsch Schweiz arbeitet, dann kann ist manchmal Hopfen und Malz verloren.

Birgitta

Fuerchau
02-03-18, 13:02
Nun, da gibt es eine ganz simple Regel:
Innerhalb einer Quelle keine Konstanten mit varianten Zeichen verwenden. Dies gilt u.U. auch für Feldnamen (#, §)!
Zur Laufzeit den Job immer auf eine gültige CCSID setzen, denn bei *HEX wird je nach Release schon mal eine andere Default-CCSID gewählt (gerne mal 037).

Was die Quellen angeht, so sorgt i.d.R. der Compiler beim Lesen natürich für die korrekte Umsetzung, wenn der Job eine korrekte CCSID aufweist!
Schließlich macht auch der Compiler nichts anderes beim Lesen, als die Daten von der Quell-CCSID in die Job-CCSID zu wandeln. Somit kann ich durchaus Quellen unterschiedlicher CCSID's mit einander mischen.

Da aber nun mal immer noch gerne mit Job-CCSID *HEX gearbeitet wird, obwohl ich schon nun bald seit jahrzehnten dagegen anpredige, tauchen dieselben Fehler halt immer wieder auf.