LF-символы конца строки автоматически изменяются на CRLF в текстовой области HTML - PullRequest
0 голосов
/ 14 ноября 2018

Я заметил, что все LF автоматически меняются на CRLF, если я помещаю их в текстовую область HTML.

■ Вопросы:

  1. , где и что вызывает такое поведение?

    • это из-за операционной системы Windows, т.е. это не произойдет, если вы используете другую операционную систему, такую ​​как MacOS?(Я только что испытал это на машине с Windows, хотя еще не тестировал на Mac ...)
    • или это зависит от браузера?(Я видел такое поведение в Chrome, IE и Firefox. Еще не тестировался в Safari ...)
    • или это происходит только в моем редакторе?(т.е. я использую редактор сакуры)
  2. Если возможно, как сохранить LF, чтобы он не превратился в CRLF?

■ Шаги, чтобы воспроизвести это:

  1. найдите текстовую область, где вы можете ввести, например, следующий веб-сайт w3school.https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_textarea

  2. подготовить текст, содержащий не менее 2 строк с некоторыми LF, с помощью редактора, который может обнаруживать символы конца строки (чтобы вы могли убедиться, что у вас есть несколько LF).As В качестве примера я использую редактор Sakura.

  3. скопируйте и вставьте текст, подготовленный на шаге 2, в текстовую область.

  4. после того, как текстскопировать в текстовую область, на этот раз скопировать все содержимое текстовой области.

  5. вставить содержимое текстовой области обратно в редактор.

  6. все символы конца строки становятся CRLF.

■ PS Подробности см. на скриншотах

  • слева - оригинальный текст с 3 LF
  • правая сторона - это контент, скопированный обратно из текстовой области, и все LF становятся CRLF)
  • 「↓」 указано LF
  • 「⏎」 указано CRLF

Спасибо

enter image description here

1 Ответ

0 голосов
/ 23 ноября 2018

Думаю, я найду в ответе хоть какую-то полезную информацию, я просто оставлю запись на случай, если найдутся люди, ищущие ответ на подобные вопросы.

  1. где и чем обусловлено это поведение?

По историческим причинам значение элемента нормализуется тремя разными способами для трех разных целей. Необработанное значение - это значение, которое было изначально установлено. Это не нормализовано. Значение API - это значение, используемое в атрибуте значения IDL. Он нормализован, так что в разрывах строк используются символы U + 000A LINE FEED (LF). Наконец, есть значение, которое используется в представлении формы и других моделях обработки в этой спецификации. Он нормализован, так что в разрывах строк используются пары символов U + 000D CARRIAGE RETURN U + 000A LINE FEED (CRLF), и, кроме того, при необходимости, с учетом атрибута переноса элемента, добавляются дополнительные разрывы строк для переноса текста на заданную ширину.

  • для получения дополнительной информации, пожалуйста, прочитайте: https://www.w3.org/TR/html5/forms.html#the-textarea-element

    1. Если возможно, как сохранить LF, чтобы он не превратился в CRLF? Я думаю, что есть много способов. Использование javascript для замены всех / r / n на / n перед отправкой формы, скорее всего, будет решением на стороне клиента. или если нет необходимости обрабатывать его на стороне клиента, что в точности соответствует моему случаю, я выполняю процесс замены на стороне сервера, чтобы принудительно преобразовать все символы конца строки в LF.
...