我正在使用java库(edtftpj)将文件从托管tomcat服务器的Web应用程序FTP到MVS系统。
FTP传输模式为ASCII,使用FTP流进行传输。 String变量中的数据存储在MVS数据集中。
问题是所有&符号都转换为&
。我尝试过各种各样的转义字符,包括\& ,^&和X'50'(十六进制值),但没有一个帮助。
任何人都知道如何逃避&符号吗?
答案 0 :(得分:2)
FTP协议中的任何内容都不会导致此编码行为。
将&
表示为&
是XML based escaping表示。 其他系统可能使用相同的方案,但作为标准,这是XML标准编码。
在读取数据和写入数据时,有些事情认为它应该逃避这些信息并进行编码。
如果MVS系统上有任何东西使用Java,它可能通过SOAP与其他连接器进行通信,这意味着XML可能导致转义序列发生。
无论哪种方式,FTP协议本身部分都不是问题的一部分,ASCII transfer should only encode things like line endings,&
已经是一个有效的ASCII字符,不会受到影响。如果有的话,MVS系统正在逃避。
几乎在所有情况下都优先使用二进制传输,因为它不对原始字节进行任何解释或编码。
答案 1 :(得分:-1)
在ASCII模式下使用FTP到/从MVS(z / OS)使用FTP将始终执行数据连接的代码页转换(即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. 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).