使用SFTP将ANSI文件从OpenVms下载到windows系统。文件中添加的额外nul字符

使用SFTP将ANSI文件从OpenVms下载到windows系统。文件中添加的额外nul字符,windows,encoding,sftp,openvms,Windows,Encoding,Sftp,Openvms,我在OpenVms系统上有一些文件。xml、.cfg和一些二进制文件。这些文件的编码类型是ANSI。当我使用FTP模式二进制文件下载时,一切正常 但是如果我使用SFTP(不管我使用哪个客户端)下载,文件中会添加额外的NUL字符 有人有同样的问题吗?同意这可能不是解决这个问题的最佳论坛。 但是,一般来说,如果您有本质上是文本文件(xml)的内容,那么显式地将FTP传输模式设置为文本应该会有所帮助。一些FTP服务器/客户端根据文件类型(.xml)猜测文件是文本文件还是二进制文件。同意这可能不是解决这

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

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


有人有同样的问题吗?

同意这可能不是解决这个问题的最佳论坛。
但是,一般来说,如果您有本质上是文本文件(xml)的内容,那么显式地将FTP传输模式设置为文本应该会有所帮助。一些FTP服务器/客户端根据文件类型(.xml)猜测文件是文本文件还是二进制文件。

同意这可能不是解决这个问题的最佳论坛。
但是,一般来说,如果您有本质上是文本文件(xml)的内容,那么显式地将FTP传输模式设置为文本应该会有所帮助。一些FTP服务器/客户端根据文件类型(.xml)猜测文件是文本文件还是二进制文件。

user8436611,在OpenVMS术语中没有“ANSI”文件。 也许您是指仅包含简单的7位ASCII字符的文件

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

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

如果这样的文件是二进制传输的,大多数工具会将其分为512字节块,其中包括控制字和可选的对齐字节,另一面看起来像二进制零

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

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

如果您的OpenVMS文件确实像我怀疑的那样是OpenVMS可变长度文件的普通文件, 然后,您可以考虑使用“FDL”文件或字符串将其转换为“StrasyLF”。 示例DCL命令:$CONVERT/FDL=“RECORD;FORMAT STREAM\u LF”old.dat new.dat

祝你好运,
在OpenVMS术语中,没有“ANSI”文件。 也许您是指仅包含简单的7位ASCII字符的文件

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

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

如果这样的文件是二进制传输的,大多数工具会将其分为512字节块,其中包括控制字和可选的对齐字节,另一面看起来像二进制零

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

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

如果您的OpenVMS文件确实像我怀疑的那样是OpenVMS可变长度文件的普通文件, 然后,您可以考虑使用“FDL”文件或字符串将其转换为“StrasyLF”。 示例DCL命令:$CONVERT/FDL=“RECORD;FORMAT STREAM\u LF”old.dat new.dat

祝你好运,
Hein

Stackoverflow是为软件开发提供帮助的。你应该考虑这样的问题。StAdExver是帮助软件开发的。你应该考虑问这样的问题。我强烈反对。不幸的是,OpenVMS在这种情况下是一种特殊的动物。这是正确的论坛。这个问题与超级用户的编程非常接近,因为可能需要位和字节知识。它应该在ASCI(文本)模式下无缝工作,但在二进制模式下应该失败,这与OP的编写相反。我强烈反对。不幸的是,OpenVMS在这种情况下是一种特殊的动物。这是正确的论坛。这个问题与超级用户的编程非常接近,因为可能需要位和字节知识。它应该在ASCI(文本)模式下无缝工作,但在二进制模式下失败,与OP的编写相反。