क्या चरित्र एक पाठ क्षेत्र में एक नई रेखा का प्रतिनिधित्व करता है


86

बस एक त्वरित, लेकिन यह सुनिश्चित करना चाहता हूं कि मैं क्रॉस प्लेटफॉर्म विविधताओं को पकड़ रहा हूं।

मैं एक पाठ क्षेत्र में प्रवेश की गई नई लाइनों को एक [अल्पविराम] में बदलना पसंद करता हूं, ताकि आउटपुट को एक पंक्ति, मेरे ...

वर्तमान में, Google क्रोम से भेजने पर, जब मैं मूल्य देखता हूं, मुझे लगता है कि यह \r\nनई लाइनों के लिए उपयोग करता है । यदि मैं प्रतिस्थापित करता \r\nहूं तो मुझे पता है कि यह विंडोज 7 पर क्रोम के लिए काम करेगा, लेकिन अन्य प्लेटफार्मों के बारे में क्या, क्या विभिन्न ब्राउज़र्स हैं जो पाठ क्षेत्र के अंदर एक नई लाइन के रूप में सम्मिलित होंगे?


3
सरल बनाने के लिए: क्या सभी ब्राउज़र केवल एक पाठ क्षेत्र में प्रविष्ट एक नई लाइन का प्रतिनिधित्व करने के लिए केवल '\ r \ n' भेजते हैं (मैं प्रोग्रामेटिक रूप से मान नहीं बना रहा हूँ, यह केवल उनके ब्राउज़र में उपयोगकर्ता द्वारा बनाया गया है)
निन्जाओनेल

जवाबों:


104

HTML विशिष्टताओं के अनुसार, ब्राउज़र को CR LF ( \r\n) के लिए उपयोगकर्ता इनपुट में लाइन विखंडन की आवश्यकता होती है , और मुझे नहीं लगता कि कोई भी ब्राउज़र गलत हो जाता है। संदर्भ: क्लॉज 17.13.4 एचटीएमएल 4.01 कल्पना में सामग्री प्रकार

एचटीएमएल 5 ड्राफ्ट में, स्थिति अधिक जटिल है, क्योंकि वे एक ब्राउज़र के अंदर की प्रक्रियाओं से भी निपटते हैं, न कि केवल डेटा जो सर्वर-साइड फॉर्म हैंडलर को भेजा जाता है जब फॉर्म सबमिट किया जाता है। उनके अनुसार (और ब्राउज़र अभ्यास), textareaतत्व का मूल्य तीन प्रकारों में मौजूद है:

  1. कच्चे मान के रूप में उपयोगकर्ता द्वारा दर्ज, अप्राकृतिक; इसमें CR, LF या CR LF जोड़ी हो सकती है;
  2. आंतरिक मूल्य, जिसे "एपीआई मान" कहा जाता है, जहां लाइन ब्रेक को एलएफ (केवल) के लिए सामान्यीकृत किया जाता है;
  3. सबमिशन वैल्यू, जहां लाइन ब्रेक को इंटरनेट कन्वेंशन के अनुसार सीआर एलएफ जोड़े के लिए सामान्यीकृत किया जाता है।

4
एचटीएमएल 5 कल्पना: w3.org/html/wg/drafts/html/CR/forms.html#the-textarea-element : the user agent should allow the user to edit, insert, and remove text, and to insert and remove line breaks in the form of "LF" (U+000A) characters
15 अक्टूबर को ComFreek

धन्यवाद, आपने मेरा दिन बना दिया! मैं बस उलझन में था क्योंकि जब मैं
ऑक्सरे

3
एक और सवाल यह है कि जब आपको टेक्सारिया का ".length" मिलता है, तो यह सीआर एलएफ को केवल एक चरित्र के रूप में गिना जाता है, लेकिन जब आप सर्वर की तरफ से जांच करते हैं (उदाहरण के लिए, PHP स्ट्रलेन के साथ) तो यह दो
चार्ट

2
@ ComFreek का लिंक आज टूट गया है, उपयोग करें: w3.org/TR/html5/forms.html#the-textarea-element
Glen Mazza

@starikovs, मुझे लगता है कि यह आंतरिक मूल्य के साथ उत्तर दिया गया है , जिसे "एपीआई मूल्य" कहा जाता है, जहां लाइन ब्रेक केवल एलएफ (केवल) के लिए सामान्यीकृत होते हैं; अंश। आप एक चरित्र (अर्थात् \n) के रूप में जो देखते हैं , वह शायद "आंतरिक एपीआई" द्वारा प्रदान किया गया है। कोई संदर्भ नहीं, यह सामान्य ज्ञान के आधार पर मेरा समर्थन आधार है।
15:90 बजे user907860

12

विशेष रूप से वेब रूपों में टेक्स्टारिस के बारे में बात करना, सभी टेक्स्टारिस के लिए, सभी प्लेटफार्मों पर, \r\nकाम करेगा।

यदि आप किसी और चीज का उपयोग करते हैं तो आप विंडोज प्लेटफॉर्म पर कट और पेस्ट के साथ मुद्दों का कारण बनेंगे।

फ़ॉर्म सबमिट होने पर विंडो ब्राउज़रों द्वारा लाइन विराम को कैनोनिकलाइज़ किया जाएगा, लेकिन यदि आप फ़ॉर्म को \nलाइनब्रेक के साथ ब्राउज़र में भेजते हैं , तो आप पाएंगे कि टेक्स्ट कॉपी नहीं करेगा और उदाहरण के लिए नोटपैड और टेक्स्टारिया के बीच सही तरीके से पेस्ट करेगा।

दिलचस्प बात यह है कि यूनिक्स लाइन एंड कन्वेंशन होने के बावजूद \n, HTTP, SMTP, POP3, IMAP और इतने पर सहित अधिकांश टेक्स्ट-आधारित नेटवर्क प्रोटोकॉल में मानक अभी भी है \r\n। हां, यह बहुत मायने नहीं रख सकता है, लेकिन यह आपके लिए इतिहास और विकासशील मानक हैं!


6

ऐसा लगता है कि, HTML5 कल्पना के अनुसार , textarea तत्व की मूल्य संपत्ति को एक नई तारीख के लिए '\ r \ n' वापस करना चाहिए:

तत्व के मूल्य निम्नलिखित परिवर्तन के साथ लागू तत्व के कच्चे मूल्य होने के लिए परिभाषित किया गया है:

एक "CR" (U + 000D) वर्ण की प्रत्येक घटना को "LF" (U + 000A) वर्ण से न बदलें, और एक "LF" (U + 000A) वर्ण की प्रत्येक घटना "CR CR" से पहले नहीं होती है U + 000D) वर्ण, U + 000D CARRAGE RETURN "CRLF" (U + 000A) चरित्र जोड़ी से युक्त दो-वर्ण स्ट्रिंग द्वारा।

'मान' के लिंक के बाद यह स्पष्ट होता है कि यह जावास्क्रिप्ट में अभिगमन की गई मूल्य संपत्ति को संदर्भित करता है:

प्रपत्र नियंत्रण में एक मान और एक चेकनेस होती है। (उत्तरार्द्ध केवल इनपुट तत्वों द्वारा उपयोग किया जाता है।) इनका उपयोग यह वर्णन करने के लिए किया जाता है कि उपयोगकर्ता नियंत्रण के साथ कैसे इंटरैक्ट करता है।

हालाँकि, सभी पाँच प्रमुख ब्राउज़रों (विंडोज़, 11/27/2015 का उपयोग करके) में, यदि एक textarea को '\ r \ n' लिखा जाता है, तो '\ r' छीन लिया जाता है। (परीक्षण करने के लिए: var e = document.createElement ('textarea'); e.value = '\ \ n'; चेतावनी (e.value == '\ n');) यह v9 के बाद से IE का सच है। इससे पहले, IE '\ r \ n' लौटा रहा था और '\ r' और '\ n' को '\ r \ n' (जो HTML5 युक्ति है) दोनों को रूपांतरित कर रहा है। तो ... मैं उलझन में हूँ।

सुरक्षित होने के लिए, आमतौर पर '\ r' का उपयोग करने के लिए पर्याप्त है, न कि केवल '\ n' के बजाय नियमित अभिव्यक्तियों में, लेकिन अगर न्यूलाइन अनुक्रम ज्ञात होना चाहिए, तो ऊपर दिए गए परीक्षण की तरह ऐप में प्रदर्शन किया जा सकता है।


उसी पृष्ठ से, JS के माध्यम से प्राप्त मूल्य को API मान नहीं कहा जाता है?
अंशुल

@ अंशुल - मैं देख रहा हूं कि तुम्हारा क्या मतलब है। मूल प्रश्न "वर्तमान में, Google क्रोम से भेज रहा था, जब मैं मूल्य देखता हूं, तो मुझे लगता है कि यह नई लाइनों के लिए \ r \ n का उपयोग करता है ..." इसलिए, चूंकि यह "भेजा" जा रहा है, मुझे लगता है कि मूल्य पर पढ़ा जा रहा है सर्वर। मैंने मान लिया कि यह जेएस के साथ था। वैसे भी, उम्मीद है कि मेरे द्वारा पोस्ट किए गए तथ्य कुछ काम के हैं। आपके कमेंट के लिए धन्यवाद।
बार्नकट

@brancat, मुझे लगता है कि सर्वर भाषा यहां मायने नहीं रखती। एचटीएमएल 5 कल्पना एक के लिए 2 चीजों पर बहुत स्पष्ट है textarea। 1. अनुरोध निकाय में केवल \ r \ n होगा। JS मान में केवल \ n ही होगा चाहे आप टाइप करते समय \ r, \ r \ n, या \ n का उपयोग करें। यह IE9 + के साथ आपकी खोज से भी मेल खाता है।
अंशुल

5

- Line Feed and 
 Carriage Return

ये HTML इकाइयां एक पाठ क्षेत्र के अंदर एक नई लाइन या कैरिज रिटर्न डालेंगी।


11
वास्तव में इस सवाल का जवाब नहीं देता है
cherouvim

2
@cherouvim, मुझे समझ नहीं आ रहा है कि आपने इस जवाब को वोट क्यों दिया है? क्या आपने ऊपर प्रश्न पढ़ा है? कृपया बिना कुछ समझे टिप्पणी के कुछ गलत जवाब न दें!
महबूब

3
@ महबूब: इस उत्तर को वर्तमान में 3 डाउनवोट मिले हैं क्योंकि यह प्रश्न का उत्तर नहीं देता है।
चेरोविम 12

सवाल का जवाब नहीं देता।
माइक डेवेनी

1
वैसे मैं ढूंढ रहा था कि क्या & # 13; मतलब और इस जवाब ने मेरी मदद की, इसलिए बुरा मत मानना, सभी जानकारी अच्छी जानकारी है और लोगों को यादृच्छिक समय में मदद करता है :)
jackrabbithanna
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.