2012-03-29 9 views
-1

Ich benutze eine Java-Bibliothek (edtftpj), um eine Datei von einer Web-App, die von einem Tomcat-Server gehostet wird, auf ein MVS-System zu übertragen.& wird & während FTP zu MVS

Der FTP-Übertragungsmodus ist ASCII und die Übertragung erfolgt über FTP-Streams. Die Daten einer String-Variablen werden in einem MVS-Dataset gespeichert.

Das Problem ist, alle Zeichen kaufmännischen Und-Zeichen werden in & konvertiert. Ich habe versucht, verschiedene Escape-Zeichen einschließlich \ &,^& und X'50 '(Hexadezimalwert), aber nichts davon geholfen.

Hat jemand eine Idee, wie man den Ampersands bitte entkommt?

+0

Wie speichern Sie die Daten in einem Datensatz? Sind Sie sicher, dass die Datei wortwörtlich kaufmännische Und-Zeichen enthält, bevor Sie sie übertragen? Es ist unglaublich unwahrscheinlich, dass FTP dafür verantwortlich ist. – geoffspear

+0

Ich habe eine Zeichenfolge wie "UK & US". Dies wird per FTP an ein Dataset wie XYZ.ID188.D0329 gesendet. Dieser Datensatz wird neu erstellt. Ich bin mir nicht sicher, ob auch FTP dafür verantwortlich ist, aber andererseits bin ich mir nicht sicher, wo das Problem liegt. – redDevil

+0

Liegt diese Zeichenfolge zufällig in einem XML-Dokument? –

Antwort

2

Nichts im FTP-Protokoll würde dieses Codierungsverhalten verursachen.

Darstellen & als & ist eine XML based escaping Darstellung. Andere Systeme verwenden möglicherweise das gleiche Schema, aber standardmäßig ist dies eine XML-Standardcodierung.

Etwas in das Lesen der Daten und Schreiben der Daten denkt, dass es diese Informationen entkommen sollte und die Codierung durchführt.

Wenn irgendetwas auf dem MVS-System Java verwendet, kommuniziert es wahrscheinlich über SOAP mit einem anderen Connector, was XML impliziert, was die Escape-Sequenz verursachen könnte.

In beiden Fällen ist das FTP-Protokoll selbst kein Teil des Problems, ASCII transfer should only encode things like line endings, & ist bereits ein gültiges ASCII-Zeichen und wäre nicht betroffen. Es ist das MVS-System, das dies tut, wenn überhaupt.

Binäre Übertragung ist in fast jedem Fall bevorzugt, da es keine Interpretation oder Encodierung der rohen Bytes vornimmt.

+0

Leider führt die Verwendung von FTP im ASCII-Modus zu/von einem MVS (z/OS) immer zu Codepagekonvertierungen. Bitte se meine Antwort für weitere Details ... – IODEV

+0

Sie haben keine Antwort, Sie haben genau das Gleiche wie ein Kommentar zu der Frage geschrieben. Wie auch immer, meine Antwort ist immer noch korrekt, nichts an FTP selbst würde dies verursachen. Wenn Sie richtig sind, dann ist es das MVS-System, das die Codierung durchführt. –

+0

Sorry Jarrod, hatte einige Probleme beim Posten der Antwort. Lessons learned: immer eine Antwort einreichen, bevor weitere Kommentare gemacht werden ;-) – IODEV

-1

Die Verwendung von FTP im ASCII-Modus zu/von einem MVS (z/OS) führt immer Codepagekonvertierungen (d. H. ASCII < -> EBCDIC) für die Datenverbindung durch. Daher ist es sehr wichtig, die Verbindung mit den entsprechenden Parametern abhängig vom Dataset-Typ und den Seitencodes einzurichten. Beispiel:

site SBD=(IBM-037,ISO8859-1) 
site TRAck 
site RECfm=FB 
site LRECL=80 
site PRImary=5 
site SECondary=5 
site BLKsize=6233 
site Directory=50 

Als Alternative verwendet BINARY Modus und manuell die Umsetzungen mit einigen der Standardwerkzeugen oder Bibliotheken auf der Empfängerseite durchzuführen.


Ref Links:

1. Preset commands to tackle codepage problem.
2. Coverting ASCII to EBCDIC via FTP on MVS Host.
3. Transferring Files to and from MVS.
4. FTP code page conversion.
5. FTP File Transfer Protocol and Z/OS (pdf).

Verwandte Themen