Этот вопрос беспокоил меня миллион лет ... всякий раз, когда я создаю веб-сайт с текстовым полем, допускающим многострочность (например, "Биография" для профиля пользователя), я всегда пишу следующий параноидальный код:
// C# code sample...
bio = bio.Replace("\r\n", "\n").Replace("\r", "\n");
bio = Regex.Replace(@"\n{2,}", "\n\n");
Итак, что браузеры отправляют для a, <textarea name="Bio"></textarea>
если у него несколько строк?
html
browser
web-standards
line-breaks
Тимоти Хоури
источник
источник
<p>
тег.Ответы:
В спецификациях HTTP и MIME указано, что строки заголовков должны заканчиваться на \ r \ n, но они неясны (некоторые утверждают, что неясно, ясны ли они) относительно того, что делать с содержимым ТЕКСТАРА. (См., Например, эту ветку рабочей группы HTML по этой проблеме.)
Вот цитата из спецификации HTTP / 1.1 о заголовках сообщений:
Я думаю, что это хорошая стратегия в целом: строго относиться к тому, что вы производите, но либерально относиться к тому, что вы принимаете. Вы должны предполагать, что вы получите всякие терминаторы строк. (Обратите внимание, что в дополнение к CRLF и LF, Mac OS-9 использовала только CR, и есть еще несколько таких. Стандарт Unicode (раздел 5.8) определяет широкий диапазон последовательностей символов, которые должны распознаваться как символы конца строки; есть их список здесь .)
источник
textarea
(что не ограничивается спецификацией или, по крайней мере, цитируемым разделом Теда).textarea
не отправляются как поля заголовка сообщения.textarea
s кодируются в тело сообщения, которое отличается.Все современные браузеры отправляют CRLF (
\r\n
). Однако это не то, что было должным образом стандартизовано, поэтому я определенно считаю целесообразным нормализовать символы новой строки всего многострочного входного текста.Когда значение считывается через JavaScript, а не отправляется непосредственно из формы, поведение браузера отличается. IE и Opera возвращают строки с CRLF в; Firefox и WebKit возвращают LF. Таким образом, любая форма, отправляемая с помощью JavaScript / XMLHttpRequest, скорее всего, будет иметь любую форму.
источник