У меня есть приложение.NET, которое пробует к ftp файл, но я заканчиваю с 1 дополнительным байтом на строку. Моим разделителем строки является Среда. NewLine, которому я верю, переводит в \n\r. Сколько байтов это?
Это 2 байта, но это должно быть \ r \ n
, а не \ n \ r
в ОС Windows
Зависит от кодировки. В 8-битных кодировках, а также в UTF-8 это 2 байта. В UCS-2 или UTF-16 это 4 байта. В UCS-4 или UTF-32 это 8 байтов.
Но проблема в том, что вы, вероятно, используете FTP-протокол в режиме ASCII, а не в режиме IMAGE.
В кодировке ASCII \n - это символ новой строки 0x0A (десятичная 10), \r - символ возврата каретки 0x0D (десятичная 13).
Как уже сказал Джек, правильная последовательность - CR-LF, а не наоборот.
FTP, вероятно, добавляет символы LF в ваш поток, если они расположены неправильно, и вы передаете файл как Текст.
Чтобы ответить на подразумеваемый вопрос:
Чтобы использовать бинарный, а не аси-трансфер в C#, используйте
FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://example.com"));
reqFTP.UseBinary = true;
Программное обеспечение FTP обычно предлагает двоичный и текстовый режим передачи. В текстовом режиме во время передачи происходит перевод новой строки. Это может быть достоверной информацией, в зависимости от того, в чем заключается ваша проблема и почему вы задали этот вопрос.