首页 > 解决方案 > 使用 SFTP 从 OpenVms 将 ANSI 文件下载到 Windows 系统。文件中添加了额外的 nul 字符

问题描述

我在 OpenVms 系统上有一些文件。.xml、.cfg 和一些二进制文件。这些文件的编码类型是 ANSI。当我使用 FTP 模式二进制文件下载时,一切正常。

但是如果我使用 SFTP(不管我使用哪个客户端)下载,文件中会添加额外的 NUL 字符。

有没有人有同样的问题?

标签: windowsencodingsftpopenvms

解决方案


user8436611,在 OpenVMS 术语中没有“ANSI”文件之类的东西。也许您的意思是一个仅包含简单 7 位 ASCII 字符的文件??

在 OpenVMS 上包含简单文本的简单“顺序”文件,仍然可以有多种记录“格式”。

本机 OpenVMS 格式称为 VARIABLE LENGTH。使用 DIRECTORY /FULL 报告文件类型或 DCL 命令 $ WRITE SYS$OUTPUT F$FILE_ATTRIBUTES(filespec,"RFM") 对于可变长度文件,每条记录(行)的前缀为(16 位)对齐的字,(16 位)二进制长度指示字。对于将显示二进制零字节的“短”行(< 256 字节)。并且任何奇数长度的记录后面都会出现一个空字节以对齐下一个记录长度字。(字= int-2)

如果此类文件是二进制传输的,大多数工具会将其分块为 512 字节块,其中包含该控制字和可选的对齐字节,在另一边看起来像二进制零。

因此,正如 Mark Diaz 所指出的,您需要告诉您的工具以“ASCII”或“TEXT”模式传输。

OpenVMS 还支持“普通”文件,其中每条记录(行)后跟一个终止符,可以是换行符(Unix)、回车符或 CR-LF(windows)。

如果您的 OpenVMS 文件确实是我怀疑的正常的 OpenVMS 可变长度文件,那么您可以考虑使用“FDL”文件或字符串将其“转换”为“Stream_LF”。DCL 命令示例: $ CONVERT/FDL="RECORD; FORMAT STREAM_LF" old.dat new.dat

祝你好运,海因


推荐阅读