Notepad++ Как сохранить CRLF при сохранении

У меня есть файл PHP, в который мне нужно внести простое изменение текста. Я использую FTP для копирования с Linux-сервера на мою машину с Win7. Я открываю его с помощью блокнота ++, включаю -просмотр-показать символ-просмотреть все символы- и я вижу CRLF и CR до и после каждой строки. Но если я сохраню файл и снова открою его в Notepad++, все CRLF будут заменены на CR.

Как я могу оставить эти CRLF такими, какими они были при сохранении?

Я использую Блокнот++ 5.9.6.2.

Кодировка установлена ​​в ANSI. Может ли файл быть действительно закодирован в другом формате, и это является причиной того, что он удаляет информацию?


person DVDmmike    schedule 22.01.2014    source источник
comment
Какая кодировка для файла PHP?   -  person Pankaj Jaju    schedule 22.01.2014


Ответы (1)


Notepad++ обычно определяет формат EOL при открытии файла и сохраняет этот формат даже при сохранении файла. Когда вы впервые открываете один из этих файлов, перейдите к Edit>EOL Conversion и посмотрите, какая опция неактивна. Это будет текущий формат окончания строки, используемый в файле, и если вы хотите использовать другой формат из списка, вы можете выбрать его там. Возможно, ваш файл имеет смешанные окончания строк, и в этом случае NPP, вероятно, нормализует окончания строк к тому, что считает правильным для файла при сохранении.

Кроме того, CR — это старый формат Mac, а это означает, что вы либо что-то испортили с вашим файлом, либо вы случайно устанавливаете формат самостоятельно, либо вы неправильно используете терминологию. CR=возврат каретки=\r, LF=перевод строки=\n; Windows использует CRLF (\r\n), *nix и OSX используют только LF (\n), и, как указано, MacOS использовала только CR (\r).

person JAB    schedule 22.01.2014
comment
Кроме того, FTP-серверы и клиенты могут быть настроены на оперативное изменение перевода строки. - person Álvaro González; 22.01.2014
comment
Я использую FileZilla v3.7.3 для FTP. Есть ли в filezilla настройка для сохранения окончания исходной строки? - person DVDmmike; 22.01.2014
comment
@ ÁlvaroG.Vicario Хотя это правда (и полезная функция в GIT, а также, возможно, в других серверах / клиентах репозитория исходного кода), я думаю, что этого не произойдет после того, как файл уже загружен с FTP-сервера, поскольку Notepad ++ программа для Windows, и поэтому я предположил, что открытие и сохранение выполнялось на машине с Win7 (не то чтобы кто-то не мог использовать ее в Linux через WINE или что-то подобное, но уже есть много функциональных текстовых редакторов * nix, так что было бы нет смысла использовать АЭС на такой машине). - person JAB; 22.01.2014
comment
@user3223999 user3223999 — Для быстрой проверки перейдите в раздел «Тип передачи/передачи» и выберите «Двоичный». В настройках есть более общая настройка, которая устанавливает значение по умолчанию. - person Álvaro González; 22.01.2014
comment
Программист, написавший код, сегодня недоступен. Так что я не могу сказать, почему он был закодирован так, что есть и CRLF, и CR. Это PHP-код ajax. Я бы показал снимок экрана с частичным кодом, если бы мог. Но когда я редактирую его в Notepad++, он думает, что это EOL Mac (как и предполагалось), но я знаю, что этот программатор не работает на Mac. Добавьте конец каждой строки кода, там есть ;CR, тогда следующая строка всегда начинается и имеет только CRLF, а затем следующая строка просто CR - person DVDmmike; 22.01.2014
comment
Если я делаю бинарную передачу с сервера на мою машину с Win 7, открываю в ++, то EOL говорит, что это файл Windows, и мне это кажется нормальным. Каждая строка имеет только CRLF в конце при просмотре в ++ - person DVDmmike; 22.01.2014
comment
@user3223999 user3223999 Это означает, что FileZilla по какой-то причине конвертирует CRLF в CRCRLFCR при передаче в виде текста, что не соответствует ни одному известному мне формату EOL (особенно если также добавляется точка с запятой). Возможно, FileZilla неправильно анализирует новые строки и предполагает, что если текстовый файл поступает с компьютера с Linux, он будет иметь окончания строки LF и, таким образом, добавляет CR к любому окончанию строки, которое он находит при передаче на компьютер с Windows, даже если это окончание строки является CR или LF с предшествующим ему CR? - person JAB; 22.01.2014
comment
Теперь, когда я думаю об этом, я, кажется, припоминаю, что сталкивался с проблемой, похожей на то, что я только что описал в прошлом, но я не могу вспомнить, с какой программой это было... - person JAB; 22.01.2014
comment
Filezilla была настроена на автоматическую передачу. Я передал двоичный код, отредактировал текст в блокноте ++, перенес обратно в двоичном формате и протестировал код, и он работает нормально. Когда я делал этот процесс раньше, код был сломан. Таким образом, передача файлов из Filezilla, похоже, вызвала проблему. - person DVDmmike; 22.01.2014
comment
@ user3223999 И вот почему. wiki.filezilla-project.org/Data_Type#Note. придерживайтесь бинарного режима, или вам нужно сказать человеку, с которым вы работаете, прекратить использовать CR+LF на сервере Linux/не передавать файлы на сервер в бинарном режиме. - person JAB; 22.01.2014