2016-10-06 141 views
0

我们正在做一个遗留现代化程序VSAM/Mainframe to JAVA。 传统系统的其中一个模块会生成一个文件,并将文件通过st到Microsoft Windows服务器进行FTP。该文件包含特殊符号]¬|![¢^在FTP上被转换为Ù^ |!>μ。FTP特殊字符MF vs Java

但是,当我们通过Apache Commons FTP Client在Java中执行相同的功能时,特殊字符会保留原样] ||| [¢^。没有翻译发生。要求将翻译保持原样,因为下游模块在不久的将来不会升级。

任何人都面临这个问题,如何在Java端我们可以做这个翻译什么大型机能够在FTP期间实现?

ftp = new FTPClient(); 
ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out))); 
int reply; 
ftp.connect(host); 
reply = ftp.getReplyCode(); 
if (!FTPReply.isPositiveCompletion(reply)) { 
    ftp.disconnect(); 
    throw new Exception("Exception in connecting to FTP Server"); 
} 
ftp.login(user, pwd); 
ftp.site("SBD=(IBM-1140,ISO8859-1)") //not working ftp says not recognised 

它执行站点代码(networkpage,characterpage)它说没有recognized.The SBD是隔离区的现场指挥的那一刻,任何人都知道相应的Java FTP客户端。

+0

这是什么JBFTP?我在IBM Knowledgecentre中找不到任何对它的引用。 –

+0

@BillWoodger对我在VSAM中有限知识的道歉实际上是它的一个步骤EXEC = FTP –

+0

作为一个老的IBM大型机人员,这里的问题是从EBCDIC到ASCII的转换。 Java使用Unicode,这是两者的超集,因此比旧系统具有更好的映射。你需要自己明确地做翻译。但是,由于您没有发布任何代码,我们无法真正帮助您。 –

回答

0

我有类似的问题。所以,代替使用ftp.site我用

ftp.sendCommand("site sbdataconn=AAAA.BBBB.CCC"); 

AAAA.BBBB.CCC是大型机数据集FB,LRECL 256含有翻译参考。

更改FTP语句

ftp.sendCommand("site sbdataconn=(IBM-1140,ISO8859-1)"); 
+0

很好,它为你工作。但根据你的指令,我给了ftp.sendCommand(“site sbdataconn =(IBM-1140,ISO8859-1)”);但它仍然提供500'站点':命令不明白。所以在我的情况下,它不工作。 –

+0

尝试使用“ftp.site(”filetype = seq“);”在发送sbdataconn指令之前。 – Dinesh