В какой ситуации я должен использовать ASCII для передачи файла по FTP? (Я не спрашиваю разницу между ascii xfer и bin xfer)
Я понимаю разницу между режимом ASCII и двоичным кодом, когда дело доходит до FTP, но я не понимаю, почему вообще существует необходимость в режиме ASCII? Является ли это просто наследием, которое использовалось для экономии времени, устраняя самый значительный бит, и поэтому общая скорость передачи увеличивается на 1/8? Или есть какое-то скрытое использование, о котором я не знаю?
Я столкнулся с множеством проблем, потому что забыл переключить режим в bin при передаче текста между различными ОС. Я не понимаю, почему "bin" - это не просто дефолт для всего, особенно сегодня гораздо более быстрые интернет-скорости.
Знаешь, Верн?
Ответы
Ответ 1
Режим ASCII существует, поэтому вы можете получить правильный ответ, когда вы загружаете текстовый файл в удаленную систему, не зная, что означают соглашения о завершении строки или условные обозначения для этой системы. Это было более важно, когда передача текстовых файлов чаще выполнялась через FTP, чем, скажем, по электронной почте.
Чтобы решить вашу практическую проблему: проверьте документацию для вашего FTP-клиента и сервера (ов), чтобы узнать, есть ли способ установить режим ASCII по умолчанию. Часто это так же просто, как какой-то "профиль", который при каждом подключении отправляет некоторые команды FTP.
Чтобы решить вашу философскую проблему: FTP - это 40-летний протокол, который имеет справедливую долю исторического багажа. Однажды вы будете очень рады, что какой-то протокол, от которого вы зависите, был стандартизирован давно, и вы все равно можете получить доступ к некоторым старым данным.
Ответ 2
Я, например, проголосую за удаление ascii-режима с ftp-серверов. Любой перевод EOL может выполняться приложениями, использующими файлы, и многие приложения сегодня понимают оба типа EOL. Как минимум, я бы хотел, чтобы сервер переключился на использование двоичного файла по умолчанию, и только при необходимости используйте ascii.
Ответ 3
Одним из сценариев практического использования режима ASCII является загрузка PHP или Perl или аналогичных сценариев с Windows на компьютер Unix. Использование двоичного режима потребует отдельного преобразования последовательностей окончания строки, в то время как преобразование режима ASCII выполняется "автоматически".
Обновление: есть еще один сценарий, с которым мы столкнулись - при передаче данных на/из мэйнфреймов, использующих кодирование EBCDIC, режим ASCII сообщает серверу о выполнении преобразования между кодировками.
Ответ 4
Вот практический пример проблемы, возникающей в результате использования двоичного FTP-соединения. В php есть два типа комментариев:
// a single line comment like this
/* a block comment like this */
Комментарий блока имеет начало и конец. Но однострочный комментарий заканчивается в конце строки.
Если вы загружаете php файл с комментариями одной строки с использованием двоичного соединения, php перестает работать, как только он попадает в комментарий одной строки. Он не распознает конец строки как конец комментария, поэтому он эффективно комментирует остальную часть вашего php script.
Если вы используете FTP в режиме ASCII, он правильно прочитает конец строки и запустит ваш php-код, как ожидалось.