С помощью команды FTP я перенес XML-файл из коробки Red Hat Enterprise Linux, которая находится в Европе, в другую коробку RHEL в Соединенных Штатах. Я не указывал режим передачи, поэтому по умолчанию он был ASCII, который, насколько я понимаю, никогда не должен переводить символы между двумя блоками Linux, но он это сделал. Размер файла увеличился в месте назначения, и vim сообщил о нем как о файле DOS. Я проверил и LANG = en_US.UTF-8 на обеих машинах.
Кто-нибудь знает, почему произошел перевод этого символа?
RFC 959 говорит, что при отправке в режиме ASCII отправляющая сторона должна отправить файл в «стандартной форме» с концами строк CRLF, а «получатель преобразует данные из стандартной формы в свою собственную внутреннюю форму». (См. Раздел 3.1.1.1, Тип ASCII.)
Таким образом, похоже, что в вашем случае отправляющая сторона отправила файл с CRLF, потому что этого требует протокол FTP, а принимающая сторона по какой-то причине сохраняет их.
Я обнаружил следующую страницу, которая говорит, что по умолчанию FTP-сервер в Red Hat Enterprise Linux 3 и 4 делает вид, что разрешает режим ASCII, но в любом случае выполняет двоичную передачу: Почему FTP-серверу vsftp не удается передать файл в режиме ASCII, когда ASCII режим был установлен FTP-клиентом в Red Hat Enterprise Linux 3 и 4?
Так что это может объяснить, почему он держит CRLF-концы строк.
источник