При поиске по этой проблеме я обнаружил очень полезные ссылки, в которых были описаны причина и возможные решения этой проблемы:
Причина
Файл был передан между системами разных типов с различными соглашениями новой строки.Например, текстовые редакторы на базе Windows будут иметь специальный символ возврата каретки (CR + LF) в конце строк для обозначения возврата строки или новой строки, которые будут неправильно отображаться в Linux (^ M).Это может быть трудно обнаружить, так как некоторые приложения или программы могут правильно обрабатывать иностранные символы новой строки, тогда как другие этого не делают.Таким образом, некоторые службы могут давать сбой или не отвечать правильно.Часто это происходит потому, что файл создается или, возможно, даже редактируется на компьютере с Microsoft Windows, а затем загружается или переносится на сервер Linux.Обычно это происходит, когда файл передается из MS-DOS (или MS-Windows) без ASCII или текстового режима.
Возможные разрешения
(1) Использование команды dos2unix
dos2unix включает в себя утилиты для преобразования текстовых файлов с переносами строк DOS или MAC в разрывы строк Unix и наоборот.Он также включает преобразование UTF-16 в UTF-8.
Вы можете использовать аналогичную команду с помощью Execute Process Task
:
dos2unix filename
(2)Задача «Поток данных»
Вы можете создать задачу «Поток данных», которая переносит данные из источника плоских файлов в новое место назначения плоских файлов, если оба подключения к плоским файлам mAnager имеют одинаковую структуру, кроме свойства «Разделитель строк» ({CR}{LF}
в источнике, {LF}
в месте назначения)
(3) Использованиезадачи скрипта - StreamReader / Writer
Вы можете использовать задачу скрипта с похожим кодом:
string data = null;
//Open and read the file
using (StreamReader srFileName = new StreamReader(FileName))
{
data = srFileName.ReadToEnd();
data = data.Replace("\r\n","\n");
}
using (StreamWriter swFileName = new StreamWriter(FileName))
{
swFileName.Write(data);
}
(4) Извлечь с помощью unzip -a
Из следующей распаковать документацию :
-a
конвертировать текстовые файлы.Обычно все файлы извлекаются именно так, как они хранятся (как «бинарные» файлы).Опция -a позволяет автоматически извлекать файлы, идентифицированные zip как текстовые файлы (файлы с меткой 't' в списках zipinfo, а не 'b'), конвертируя окончания строк, символы конца файла и символыустановить себя по необходимости.(Например, файлы Unix используют перевод строки (LF) для конца строки (EOL) и не имеют маркера конца файла (EOF); Macintoshes используют возврат каретки (CR) для EOL; и большинство операционных систем ПК используютCR + LF для EOL и control-Z для EOF. Кроме того, мэйнфреймы IBM и терминальная система Мичигана используют EBCDIC, а не более распространенный набор символов ASCII, а NT поддерживает Unicode.) Обратите внимание, что zip-идентификация текстовых файлов отнюдь неидеально;некоторые текстовые файлы могут быть двоичными и наоборот.поэтому unzip печатает '' [text] '' или '' [binary] '' в качестве визуальной проверки для каждого файла, который он извлекает при использовании опции -a.Опция -aa заставляет все файлы извлекаться как текст, независимо от предполагаемого типа файла.В VMS см. Также -S.
Таким образом, вы можете использовать следующую команду для извлечения текстовых файлов с изменением окончаний строк:
unzip -a filename
Кредит @ jww комментарий
Другие полезные ссылки