我正在使用java库(edtftpj)将文件从tomcat服务器托管的web应用程序FTP到MVS系统。
FTP传输模式为ASCII,使用FTP流进行传输。String变量中的数据存储到MVS数据集中。
问题是所有的与号字符都被转换为&
。我尝试过各种转义字符,包括\&&和X'50'(十六进制值),但都无济于事。
有人知道如何逃离电流吗?
FTP协议中的任何内容都不会导致这种编码行为。
将&
表示为&
是一种基于XML的转义表示其他系统可能使用相同的方案,但作为标准,这是一种XML标准编码
在读取数据和写入数据时,有人认为它应该逃离这些信息,并正在进行编码。
如果MVS系统上有任何东西使用Java,那么它可能是通过SOAP与其他连接器通信的,这意味着XML,这可能会导致转义序列的发生。
无论哪种方式,FTP协议本身部分都不是问题的一部分,ASCII传输应该只编码行结尾之类的东西,&
已经是有效的ASCII字符,不会受到影响。如果说有什么不同的话,那就是MVS系统在进行这种转义。
二进制传输几乎在任何情况下都是首选,因为它不对原始字节进行任何解释或编码
在ASCII模式下使用FTP到MVS(z/OS)/从MVS(z/OS)进行数据连接的代码页转换(即ASCII<->EBCDIC)。因此,根据数据集类型和页面代码,使用适当的参数设置连接非常重要。示例:
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
或者,使用BINARY模式,并使用接收端的一些标准工具或库手动执行转换。
参考链接:
1.预设命令以解决代码页问题
2.在MVS主机上通过FTP将ASCII转换为EBCDIC
3.在MVS之间传输文件
4.FTP代码页转换
5.FTP文件传输协议和Z/OS(pdf)