windows - 使用 SFTP 从 OpenVms 将 ANSI 文件下载到 Windows 系统。文件中添加了额外的 nul 字符
问题描述
我在 OpenVms 系统上有一些文件。.xml、.cfg 和一些二进制文件。这些文件的编码类型是 ANSI。当我使用 FTP 模式二进制文件下载时,一切正常。
但是如果我使用 SFTP(不管我使用哪个客户端)下载,文件中会添加额外的 NUL 字符。
有没有人有同样的问题?
解决方案
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
祝你好运,海因
推荐阅读
- flutter - flutter + firebase无密码电子邮件登录-动态链接数据返回null
- validation - Apps 脚本中用于数据验证的控制消息框
- javascript - Vue路由器-如何根据用户角色在同一路由路径上加载多个组件?
- python - 尝试计算和打印整数时获取“int”对象不是可下标的错误
- ios - 如何使用 SquareAPI 成功地将信用卡信息传递给 heroku?获取 NSCocoaErrorDomain 问题代码 3840
- python - numpy 整数数组转换为 numpy 数组数组
- python - 如何在包内导入模块
- python - 首先训练模型并多次测试
- oop - 更改继承类中的类字段类型
- google-apps-script - Google Apps 脚本 - 表格电子邮件提醒和数据收集