Pertanyaan ini telah mengganggu saya selama jutaan tahun ... setiap kali saya membuat situs web dengan textarea yang memungkinkan multi-baris (seperti "Bio" untuk profil pengguna), saya selalu berakhir dengan menulis kode paranoid berikut:
// C# code sample...
bio = bio.Replace("\r\n", "\n").Replace("\r", "\n");
bio = Regex.Replace(@"\n{2,}", "\n\n");
Jadi, apa yang dikirim browser <textarea name="Bio"></textarea>
jika memiliki banyak baris?
html
browser
web-standards
line-breaks
Timothy Khouri
sumber
sumber
<p>
tag.Jawaban:
Spesifikasi HTTP dan MIME menetapkan bahwa baris header harus diakhiri dengan \ r \ n, tetapi tidak jelas (beberapa orang akan berpendapat bahwa tidak jelas apakah jelas) tentang apa yang harus dilakukan dengan konten TEXTAREA. (Lihat, misalnya, utas ini dari kelompok kerja HTML tentang masalah tersebut.)
Berikut kutipan dari spesifikasi HTTP / 1.1 tentang header pesan:
Saya pikir itu adalah strategi yang baik secara umum: tegas tentang apa yang Anda hasilkan tetapi liberal dalam apa yang Anda terima. Anda harus berasumsi bahwa Anda akan menerima semua jenis terminator baris. (Perhatikan bahwa selain CRLF dan LF, Mac OS-9 menggunakan CR saja, dan masih ada beberapa di antaranya. Standar Unicode (bagian 5.8) menetapkan berbagai urutan karakter yang harus dikenali sebagai terminator baris; ada daftarnya di sini .)
sumber
textarea
(yang merupakan sesuatu yang tidak dibatasi oleh spesifikasi, atau setidaknya bagian yang dikutip dari Ted).textarea
tidak dikirim sebagai kolom header pesan.textarea
s dikodekan ke dalam badan pesan yang berbeda.Semua browser modern mengirim CRLF (
\r\n
). Namun ini bukan sesuatu yang telah distandarisasi secara memuaskan, jadi saya pasti akan mempertimbangkan untuk menormalkan baris baru dari semua teks masukan multi-baris.Ketika nilai dibaca melalui JavaScript daripada dikirim langsung dari formulir, perilaku browser berbeda. IE dan Opera mengembalikan string dengan CRLF di; Firefox dan WebKit mengembalikan LF. Jadi, segala bentuk yang dikirimkan dengan bantuan JavaScript / XMLHttpRequest kemungkinan besar datang dalam bentuk apa pun.
sumber