Назад | Перейти на главную страницу

На каком основании следует выбирать ASCII или двоичный код, передаваемый по FTP?

FTP-клиенты, в том числе используемые программно, позволяют пользователю выбирать ASCII или двоичную передачу при загрузке файла. Некоторые клиенты также поддерживают некоторую разновидность Auto, которую вы оставляете на усмотрение FTP-клиента.

Каковы некоторые правильные причины для выбора одного формата над другим? Как решить? Как можно автоматизировать это решение, помимо клиентов, поддерживающих автоопределение?

Windows использует как возврат каретки, так и перевод строки, чтобы показать конец строки в текстовом файле. Unix обычно использует только один (я думаю, перевод строки). Когда вы загружаете ftp-файлы в виде текста, ftp-программа конвертирует концы строк за вас. В двоичном режиме файл передается в том виде, в котором он есть. Поэтому, если вы передаете текстовый документ, используйте ASCII. Что-нибудь еще и двоичное, вероятно, ваш лучший выбор. Как отмечали другие, большинство современных текстовых редакторов в любом случае будут иметь дело с окончаниями строк (Блокнот не работает и не является современным :)), поэтому двоичный файл является, безусловно, более безопасным вариантом. Я также согласен с @njsf, мне не нравится, когда файлы меняются за моей спиной. У меня есть редакторы, которые вполне способны выполнить поиск и замену, чтобы исправить окончания строк, если в этом возникнет необходимость.

В наши дни, когда большинство текстовых редакторов автоматически обнаруживают и адаптируются к окончанию строк unix / dos / mac, я нахожу очень мало оправданий для использования передачи ftp в формате ASCII. Я всегда использую двоичный файл.

Мне не нравится, когда файлы меняются под прикрытием.

На самом деле я сейчас гораздо чаще использую scp, чем ftp, а scp просто копирует биты ...

Всегда используйте двоичный файл. Сделайте преобразование вручную, если необходимо - скорее всего, никогда не понадобится.

Режим ASCII выполняет только преобразование конца строки между системами с разным подчинением. Сейчас это абсолютно бессмысленно. Большинство редакторов адаптируются, синтаксические анализаторы XML в основном игнорируют их, вы сталкиваетесь с проблемами только при попытке скомпилировать файлы .c или запустить файлы sh в Unix с окончанием строки MS-DOS, но обычно это происходит только из-за неуместной передачи режима ASCII .

Просто откажитесь от режима ASCII. В любом случае современные FTP-клиенты по умолчанию будут использовать BINARY.

Лично я предпочитаю использовать двоичный код для каждой передачи. Однажды меня укусил файл, который был помещен с машины Windows на машину unix с использованием двоичной передачи. В результате у txt-файла остались окончания CR LF.

Режим ASCI просматривает исходную и целевую платформы и выполняет перевод конца строки, поэтому полученный мной файл имеет окончания строки CR CR LF (LF был переведен ASCI в CR LF, поскольку это было unix -> windows)

Звучит мелочно, но это был файл журнала размером 20 ГБ, и у меня было только одно временное окно, в котором я его собирал.

Я использую утилиты преобразования eol на локальной машине, если возникает необходимость.

РЕДАКТИРОВАТЬ: я возвращал файл в окна с хоста unix

Обратите внимание, что передача текста в некоторые систем ускоряется за счет использования текстового режима (не совсем ASCII), потому что они не используют набор символов. Например, EBCDIC на мэйнфреймах IBM и подобных системах.

Пока в обеих системах используется один и тот же базовый набор символов, двоичный код, вероятно, не составит труда.

Понимание того, что есть как Windows и Unix кодируют новую строку в текстовом файле, и что такое разница между двоичным и ASCII режимом передачи позволит вам ответить на этот вопрос самостоятельно.