PDA

View Full Version : Zeichendarstellung ASCII/EBCDIC



Endymion
09-10-07, 09:59
Hallo,

ich würde gerne an einen Socket Daten senden. Hinter dem Socket steht ein Linux System.
Die Verbindung und die Datenübertragung funktionieren problemlos.....bis auf die korrekte Darstellung der Daten.

ich sende z.b. ÄÖÜ / \ | (von einer as400), wenn ich mit Debug die daten kontrolliere stehen auch diese Zeichen in meinem CharString.
Wenn ich die Daten jetzt unter Linux anschauen will, setzt er mir keines korrekt um. ({~[º\}!)

wie kann ich diese Daten 1:1 senden?

ich habe auch schon probiert die Daten an einen socketServer auf der AS400 zu senden. Er setzt mir die Zeichen \ und | einfach nicht richtig um.
Ebenfalls habe ich schon probiert die zeichen in ASCII (mit QDCXLATE) umzusetzen und dann auf dem Server wieder zurück in EBCDIC....da werden die Zeichen ebenfalls nicht korrekt dargestellt.

vielen dank, endy

Fuerchau
09-10-07, 10:55
Das hängt nun von der CCSID deines Job's ab.
Steht dieser auf 65535 wird ggf. bei der impliziten Codewandlung mit 037 auf ASCII gewandelt.
Deine Daten sind aber wahrscheinlich Code 273 !
Ändere deinen Job auf 273, dann müsste es klappen.

Nimmst du deine Codewandlung selber vor (und überträgst im Binärmodus), musst du die richtige Ziel-Ascii-Codepage wählen.

Arbeitet dein Ziel in ASCII (CP 850) oder ANSI (CP 1252) ?

Bei der Verwendung von QDCXLATE musst du eine Tabelle Q273337xxx auswählen, wobei xxx z.B. für 850 steht.

Ansonsten sind diese API's besser geeignet:
Data Conversion APIs (http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/apis/nls3.htm?resultof=%22%43%44%52%43%56%52%54%22%20%2 2%63%64%72%63%76%72%22%20)

Besser noch folgendes:
Convert a Graphic Character String (CDRCVRT, QTQCVRT) API (http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/apis/CDRCVRT.htm)