Почему в FTP есть режим ASCII, который преобладает в современных реализациях программного обеспечения и FTP? Почему бы просто не всегда использовать двоичный файл независимо от данных?
5 ответов
Если есть сомнения, прочитайте RFC:
Файловая структура используется по умолчанию, если команда STRUcture не использовалась, но как файловые, так и структурные записи должны приниматься для "текстовых" файлов (т.е. файлов с TYPE ASCII или EBCDIC) всеми реализациями FTP. Структура файла будет влиять как на режим передачи файла (см. Раздел "Режимы передачи"), так и на интерпретацию и хранение файла.
"Естественная" структура файла будет зависеть от того, на каком хосте хранится файл. Файл исходного кода обычно хранится на мэйнфрейме IBM в записях фиксированной длины, но на DEC TOPS-20 в виде потока символов, разделенных на строки, например, с помощью. Если передача файлов между такими разнородными сайтами будет полезной, у одного сайта должен быть какой-то способ распознать предположения другого относительно файла.
и т. д. Короче говоря, это необходимо для того, чтобы текстовые представления в одной кодировке были правильно преобразованы при передаче на хосты с использованием другой кодировки.
Потому что разные операционные системы (Windows, UNIX, VAX) используют разные методы окончания строки для простых текстовых файлов.
Windows (DOS) использует пару CR/LF, UNIX использует только одну из них. Режим ASCII конвертирует пары CRLF, а режим BIN - нет.
Рон
Я думаю, что это просто потому, что иногда это удобно. Еще в тот день , когда FTP был , как вы получили файлы из одной системы в другую, это большая экономия времени - вы не должны знать , что система была на другом конце, чтобы иметь читаемый текстовый файл.
Но да, в основном это просто неприятность сегодня. Просто испорченная машина для непосвященных!
Режим ASCII занял свое место в тот день, когда кодировка символов и EOL была реальной проблемой, но я хотел бы, чтобы клиенты ftp удалили или, возможно, просто скрыли эту опцию сегодня. В настоящее время между системами в основном путаются соглашения EOL, но я обнаружил, что большинству приличных текстовых редакторов все равно. Поэтому, чтобы избежать повреждения бинарных файлов (или даже некоторых текстовых), я рекомендую просто использовать двоичный режим для всего.
Режим ASCII используется для того, чтобы программное обеспечение могло автоматически изменять символы EOL на правильные значения для клиента / сервера в зависимости от того, загружаете вы или скачиваете. Если вы загружаете в систему того же типа, что и вы, нет никакой разницы в этих режимах.
Причина этого режима заключается в том, что не все программное обеспечение во всех системах будет правильно обрабатывать EOL, которые не являются точным типом EOL (например, многие программные продукты Windows будут правильно обрабатывать только «\r\n» и что-то блокировать). ужасно на "\n").