启用UTF-8到EBCDIC编码的站点代码

启用UTF-8到EBCDIC编码的站点代码,utf-8,ftp,zos,ebcdic,mojibake,Utf 8,Ftp,Zos,Ebcdic,Mojibake,我正在尝试将一个相当大的UTF-8文件传输到Z/OS数据集。不幸的是,这个命令 SITE EN=MBCS MBD=(1047,1208) RECFM=VB TYPE A STOR STORE.WRK.DATA 回应 504 Multi-byte encoding not supported for RECFM=FB 似乎RECFM=VB不起作用 解决方法是在上传之前将UTF-8重新编码为ISO-8859-1,但上传时编码更有效 实现这一目标的诀窍可能是多方面的 首先,该站点必须在Unicod

我正在尝试将一个相当大的UTF-8文件传输到Z/OS数据集。不幸的是,这个命令

SITE EN=MBCS MBD=(1047,1208) RECFM=VB
TYPE A
STOR STORE.WRK.DATA
回应

504 Multi-byte encoding not supported for RECFM=FB
似乎
RECFM=VB
不起作用


解决方法是在上传之前将UTF-8重新编码为ISO-8859-1,但上传时编码更有效

实现这一目标的诀窍可能是多方面的

首先,该站点必须在Unicode conversion Services for z/OS中定义从IBM-1047到IBM 1208的转换。如果不是这样,隐藏的尝试就会失败


第二,您不能将每个字符一个字节的代码页发送到一个数据集,而是将其转换为每个字符多个字节的代码页。如果数据集中的任何字符增长到两个或三个字节,记录长度将导致失败。因此,将其传输到一个可变记录长度的数据集,您就没事了。

那么您的问题是什么?您现在是如何编码的?以UTF-8编码的原始文件被转码到ISO_8859-1,然后以ASCII模式使用FTP上传到Z/OS数据集。我正在寻找一种方法,将ASCII模式FTP配置为直接接受UTF-8。请注意……UTF-8当然可以表示比ISO-8859更多的字符,因此,如果UTF-8文件中存在无法用ASCII表示的多字节序列,您应该做好数据丢失的准备。当底层的“iconv()”例程检测到这一点时,它是不愉快的。还有一件事……我发现UNIX服务文件在这种情况下是您的朋友。假设您的站点设置正确,将STOR更改为引用路径(./store.wrk.data)将消除许多问题-UNIX文件通常不存在RECFM。事实证明,我们必须对文件进行预处理,因此我们保留了转换代码
BufferedReader br=new BufferedReader(新的java.io.InputStreamReader(inputdoc.getInputStream(),“UTF-8”)
BufferedWriter bw=新的BufferedWriter(新的java.io.OutputStreamWriter(outputdoc.getOutputStream(),“Windows-1252”)