У меня есть сценарий, который генерирует файл csv, используя следующий код:
header('Content-type: text/csv'); header('Content-Disposition: attachment; filename="'.date("Ymdhis").'.csv"'); print $content;
Переменная $ content просто содержит строки с полями, разделенными запятыми, а затем завершена с помощью. "\ N"; для создания новой строки.
Когда я открываю файл в csv, он выглядит хорошо, однако, когда я пытаюсь использовать файл для импорта во внешнюю программу (MYOB), он не распознает символ End Of Line (\ n) и принимает одну длинную строку текста.
Когда я просматриваю содержимое файла в блокноте, символ конца строки (\ n) представляет собой небольшой прямоугольник, который выглядит как код символа 0x7F.
Если я открою файл и заново сохраню его в excel, он удалит этот символ и заменит его соответствующим символом конца строки, и я могу импортировать файл.
Какой характер мне нужно генерировать на PHP, чтобы блокнот распознал его как действительный символ конца строки? (\ n), очевидно, не выполняет эту работу.
Используйте «\ r \ n». (с двойными кавычками)
Вышеупомянутые символы ascii для возврата каретки + линии.
Исторически это относится к ранним дням вычислений на телетайпах, когда выход был напечатан на бумаге и возврат каретки телеисточника в начало линии был отдельной операцией для подачи линии через принтер. Вы можете перезаписать строки, просто вернув карету и вставьте пустые строки только фидом строк. Выполнение обоих вернул голову в начало линии и подало ей новую строку для печати.
То, что именно требовалось, отличалось между системами –
Итак, то, что вы создаете на данный момент, – это новая строка только в системе Unix. У Википедии есть довольно хорошая страница .
Для выполнения преобразования также есть инструменты командной строки unix. Команды unix2dos и dos2unix преобразуют текстовые файлы ascii назад и вперед между форматами unix и dos, преобразуя линейный канал в линейный канал плюс возврат каретки и наоборот.
Обязательно используйте двойные кавычки вокруг \ r \ n, а не одиночные кавычки, как указано в предыдущем ответе!
Я испытал ту же проблему. Позже я заменил
одинарные кавычки '
с двойными кавычками "
строя переменную $ content .
т.е. сохранение внешних котировок скорее удваивается, чем одно значение в переменной $ content .
И это сработало 🙂