【发布时间】:2016-10-06 15:30:37
【问题描述】:
我们正在为 JAVA 进行传统的现代化计划 VSAM/Mainframe。 遗留系统的模块之一生成一个文件,该文件由 st FTP 到 Microsoft windows 服务器。该文件包含特殊符号 ]¬|![¢^,它在 FTP 上被转换为 Ù^|!›µ。
但是,当我们通过 Apache Commons FTP 客户端在 Java 中执行相同的功能时,特殊字符将保留为 ]¬|![¢^。没有翻译发生。要求是保持翻译原样,因为下游模块在不久的将来不会升级。
有人遇到过这个问题,我们如何在 Java 端进行这种转换,而 Mainframe 在 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)的那一刻,它说不识别。sbd是zos站点命令,任何人都知道对应的java ftp客户端。
【问题讨论】:
-
这个 JBFTP 是什么?我在 IBM Knowledgecentre 中找不到任何对它的引用。
-
@BillWoodger 为我对 VSAM 的有限知识道歉,实际上它是一个步骤 EXEC = FTP
-
作为 IBM 大型机老手来说,这里的问题是从 EBCDIC 到 ASCII 的转换。 Java 使用 Unicode,它是两者的超集,因此比旧系统具有更好的映射。您需要自己明确地进行翻译。但是,由于您没有发布任何代码,我们无法为您提供真正的帮助。
-
@JimGarrison 更新了 java 中的代码最后一行代码是我所面临的问题。
-
"因为至少有 4 种不同的 EBCDIC 编码,我们选择不直接支持 EBCDIC。要传输 EBCDIC 和其他不受支持的文件类型,您必须创建自己的过滤器 InputStreams 和 OutputStreams 并将它们包装起来围绕 FTPClient 方法返回或要求的流。”如果那仍然是真的......
标签: java ftp apache-commons mainframe codepages