Загрузите файл ANSI с помощью SFTP из OpenVms в систему Windows. Добавлены дополнительные нулевые символы в файл
У меня есть несколько файлов в системе OpenVms. .xml, .cfg и некоторые двоичные файлы. Тип кодирования этих файлов - ANSI. Когда я использую двоичный режим FTP для загрузки, все работает нормально.
Но если я использую SFTP (не имеет значения, какой клиент я использую) для загрузки, в файл добавляются дополнительные символы NUL.
У кого-нибудь есть такая же проблема?
2 ответа
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 байт с этим управляющим словом и необязательным включенным байтом выравнивания, похожим на двоичные нули с другой стороны.
Для этого, как отметил Марк Диас, вам необходимо указать инструменту для перевода в режиме "ASCII" или "TEXT".
OpenVMS также поддерживает "нормальные" файлы, где после каждой записи (строки) следует терминатор, который может быть переводом строки (Unix), возвратом каретки или CR-LF (окна).
Если ваш файл OpenVMS действительно является файлом переменной длины для нормальной OpenVMS, как я подозреваю, то вы можете рассмотреть возможность его "преобразования" в "Stream_LF" с использованием файла или строки "FDL". Пример команды DCL: $ CONVERT/FDL="RECORD; FORMAT STREAM_LF" old.dat new.dat
Удачи хейн
Согласитесь, это не лучший форум для вопроса. Но, в общем, если у вас есть текстовые файлы (xml), явная настройка режима передачи по FTP на текст должна помочь. Некоторые FTP-серверы / клиенты предполагают, является ли файл текстовым или двоичным в зависимости от типа файла (.xml).