Ответ 1
Если я правильно помню, текстовые файлы в FTP-dom являются ASCII-7bit и не могут содержать символы с верхним битом, AKA ASCII-8BIT. Акцентированные символы, даже в расширенных ASCII или 8BIT, или все, что мы хотим назвать чем-то выше 0x7F, должны быть переданы в двоичном режиме.
От FTP RFC:
ASCII
The ASCII character set is as defined in the ARPA-Internet
Protocol Handbook. In FTP, ASCII characters are defined to be
the lower half of an eight-bit code set (i.e., the most
significant bit is zero).
Итак, вы, вероятно, должны использовать getbinaryfile
.
Основное практическое различие между ними состоит в том, что двоичный режим не будет выполнять переводы на конец строки. Если исходная система основана на ECDIC или альтернативном размере слова, gettextfile
переведет файл на лету в ASCII. Встречащие символы, которые не в ожидаемой кодировке, могут легко вызвать проблему, которую вы видите.
Если файл не имеет смысла после передачи с использованием getbinaryfile
, он может быть в альтернативном коде, чем UTF8 на мэйнфрейме. Вам нужно будет выяснить, какой набор кодов находится в этой системе, и открыть файл с соответствующими настройками кодировки после загрузки. Вы можете использовать команду file
в системах * nix, чтобы получить обоснованное предположение о кодировке файлов, но это не исчерпывающий тест и может быть введен в заблуждение. Поскольку файл поступает с мэйнфрейма, он может использовать другой формат слова, такой как UTF-16BE, UTF-32LE или быть закодированным в EBCDIC. В этом случае работа с альтернативными ОС и аппаратными средствами становится очень раздражающей.
Без примеров текста, первых двух байтов файла и выборки текста в шестнадцатеричном дампе вам сложно помочь.
И, после всего этого, было бы проще использовать cURL или Curb gem для извлечения файла. cURL очень гибкий и мощный и может предоставить вам необходимые инструменты.