CR LF, LF और CR लाइन ब्रेक प्रकार के बीच अंतर?


755

मैं सीआर एलएफ (विंडोज), एलएफ (यूनिक्स) और सीआर (मैकिंटोश) लाइन ब्रेक प्रकारों के बीच अंतर (उदाहरण के लिए यदि संभव हो तो) जानना चाहूंगा।


9
बहुत समान है, लेकिन एक सटीक डुप्लिकेट नहीं है। \nआमतौर पर एक लाइनफीड द्वारा दर्शाया जाता है, लेकिन यह जरूरी नहीं कि एक लाइनफीड है।
एड्रियन मैक्कार्थी

92
सीआर और वामो ASCII और जब यूनिकोड नियंत्रण चरित्र \rऔर \nकुछ प्रोग्रामिंग भाषाओं में इस्तेमाल किया कपोल-कल्पना कर रहे हैं। इस सवाल को बंद करने से सवालों के बीच बुनियादी अंतर खत्म हो जाता है और गलत जानकारी फैल जाती है।
एड्रियन मैक्कार्थी

5
@AdrianMcCarthy यह एक तरह से करीबी वोट के साथ एक समस्या है, जो एक तरह से उत्तर के रूप में कार्य करता है; एक उत्तर में दावा किया गया कि दोनों एक ही थे, नीचे गिराया जा सकता है और फिर बहुत, बहुत गलत के रूप में निकाला गया, लेकिन इसमें केवल 4 सहमत मतों (अपवित्रों के बराबर) के लिए एक बहुत ही गलत करीबी होने के लिए, वोट का मुकाबला करने का कोई तरीका नहीं है। यह हुआ है।
जॉन हैना

प्रश्न का यह निरूपण बेहतर है, लेकिन यह अभी भी सभी व्यावहारिक उद्देश्यों के लिए समान प्रश्न है।
जुक्का के। कोर्पेला

6
@ JukkaK.Korpela: नहीं, यह वास्तव में नहीं है। \nसभी प्रोग्रामिंग भाषाओं में एक ही बात का मतलब नहीं है।
एड्रियन मैक्कार्थी

जवाबों:


346

यह वास्तव में बस के बारे में है जो बाइट्स एक फ़ाइल में संग्रहीत हैं। CRकैरिज रिटर्न (टाइपराइटर के दिनों से) और LFइसी तरह, लाइन फीड के लिए एक बाईटेकोड है। यह सिर्फ उन बाइट्स को संदर्भित करता है जिन्हें अंत-लाइन मार्कर के रूप में रखा गया है।

अधिक जानकारी, हमेशा की तरह, विकिपीडिया पर ।


52
मुझे लगता है कि यह उल्लेख करने के लिए भी उपयोगी CRहै कि पलायन चरित्र है \rऔर LFपलायन चरित्र है \n। इसके अलावा, न्यूलाइन
बजे रॉबर्ट वुनाबंदी

1
सरल शब्दों CR and LFमें इस लिंक के अनुसार लाइन और नई लाइन का अंत है , क्या यह सही है?
शैजुत

@ शशिजुत सीआर का मतलब है कैरिज रिटर्न। यह वही था जो गाड़ी को टाइपराइटर पर लौटाता था। इसलिए, ज्यादातर सही है।
अलीफर्कन

763

सीआर और एलएफ नियंत्रण वर्ण हैं, क्रमशः कोडित 0x0D(13 दशमलव) और 0x0A(10 दशमलव)।

उनका उपयोग टेक्स्ट फाइल में लाइन ब्रेक को चिह्नित करने के लिए किया जाता है। जैसा कि आपने संकेत दिया था, विंडोज दो वर्णों का उपयोग करता है सीआर एलएफ अनुक्रम; यूनिक्स केवल LF और पुराने MacOS (पूर्व OSX MacIntosh) CR का उपयोग करता है।

एक ऐतिहासिक दृष्टिकोण:

जैसा कि पीटर , सीआर = कैरिज रिटर्न और एलएफ = लाइन फीड द्वारा संकेत दिया गया है , पुराने टाइपराइटर / टीटीवाई में दो अभिव्यक्तियों की जड़ें हैं। LF ने कागज को ऊपर ले जाया (लेकिन क्षैतिज स्थिति को समान रखा) और CR ने "कैरिज" को वापस लाया ताकि टाइप किया गया अगला अक्षर कागज पर सबसे बाईं ओर (लेकिन उसी पंक्ति पर) हो। CR + LF दोनों कर रहा था, यानी एक नई लाइन टाइप करने की तैयारी। जैसे-जैसे कोड के भौतिक शब्दार्थ लागू होते गए, वैसे-वैसे मेमोरी और फ्लॉपी डिस्क की जगह प्रीमियम पर होती गई, कुछ OS डिजाइनरों ने केवल एक पात्र का उपयोग करने का फैसला किया, वे बस एक दूसरे के साथ बहुत अच्छी तरह से संवाद नहीं करते थे; -)

अधिकांश आधुनिक टेक्स्ट एडिटर और टेक्स्ट-ओरिएंटेड एप्लिकेशन विकल्प / सेटिंग्स आदि प्रदान करते हैं जो फ़ाइल के अंत-लाइन सम्मेलन के स्वचालित पता लगाने और तदनुसार प्रदर्शित करने की अनुमति देते हैं।


11
इसलिए वास्तव में विंडोज़ एकमात्र ऐसा ओएस है जो इन वर्णों का ठीक से उपयोग करता है, कैरिज रिटर्न, उसके बाद एक पंक्ति फ़ीड।
रॉल्फ

4
क्या यह कहना सही होगा, कि विंडोज पर बनाई गई एक टेक्स्ट फ़ाइल तीनों में से सबसे अधिक संगत है यानी सभी तीन ओएस सबसेट पर प्रदर्शित होने की सबसे अधिक संभावना है?
प्रोमेथियस

3
@ हाशिम इसे ठीक से प्रदर्शित कर सकता है, लेकिन गाड़ी के रिटर्न के साथ एक शाब्दिक खोल स्क्रिप्ट को चलाने की कोशिश कर रहा है, आमतौर पर एक त्रुटि होगी
ओमर

सरल शब्दों CR and LFमें इस लिंक के अनुसार लाइन और नई लाइन का अंत है , क्या यह सही है?
शैजुत

मैंने पाया है कि कुछ विंडोज-शैली की फाइलें ( CR+LF) अन्य प्रणालियों पर दोहरी newlines के साथ प्रदर्शित कर सकती हैं। संभवतः संपादक जो पाठ प्रदर्शित करता है, वह कैरलाइन रिटर्न और लाइन फीड दोनों को नईलाइन सीमांकक के रूप में समर्थन करता है, और इस तरह 2 लाइनें बना सकता है जहां 1 का इरादा था। इसलिए जबकि सबसे अधिक संगत CR+LFहो सकता है , मुझे नहीं लगता कि यह बिना मुद्दा है।
मैग्नस बुल

458

यह एक अच्छा सारांश है जो मैंने पाया:

कैरिज रिटर्न (सीआर) वर्ण ( 0x0D, \r) अगली पंक्ति में आगे बढ़ बिना लाइन की शुरुआत के लिए कर्सर ले जाता है। इस चरित्र का उपयोग कमोडोर और अर्ली मैकिनटोश ऑपरेटिंग सिस्टम (OS-9 और इससे पहले) में एक नई लाइन के चरित्र के रूप में किया जाता है।

लाइन फ़ीड (LF) वर्ण ( 0x0A, \n) कर्सर को लाइन की शुरुआत में वापस आए बिना अगली पंक्ति में ले जाता है। इस वर्ण का उपयोग UNIX आधारित प्रणालियों (लिनक्स, मैक OSX, आदि) में एक नई पंक्ति वर्ण के रूप में किया जाता है

लाइन (EOL) अनुक्रम का अंत ( 0x0D 0x0A, \r\n) वास्तव में दो ASCII वर्ण, सीआर और वामो पात्रों में से एक संयोजन है। यह कर्सर को अगली पंक्ति में और उस रेखा के आरंभ में नीचे ले जाता है। इस चरित्र का उपयोग Microsoft विंडोज, सिम्बियन ओएस और अन्य सहित अधिकांश गैर-यूनिक्स ऑपरेटिंग सिस्टमों में एक नई लाइन चरित्र के रूप में किया जाता है।

स्रोत


1
"वर्टिकल टैब" -चैकर कर्सर को नीचे ले जाता है और लाइन में स्थिति रखता है, एलएफ-कैरेक्टर नहीं। LF EOL है।
12431234123412341234123

2
@TaylorLeese हैं / r / n और / n / r समान?
विक्रोबोट

175

चूंकि इसका कोई जवाब नहीं है, इसलिए केवल संक्षेप में संक्षेप में कहा गया है:

कैरिज रिटर्न (मैक प्री-ओएसएक्स)

  • सीआर
  • \ r
  • ASCII कोड 13

लाइन फ़ीड (लिनक्स, मैक OSX)

  • वामो
  • \ n
  • ASCII कोड 10

कैरिज रिटर्न और लाइन फीड (विंडोज)

  • CRLF
  • \ R \ n
  • ASCII कोड 13 और फिर ASCII कोड 10

यदि आप ASCII कोड को एक अजीब प्रारूप में देखते हैं, तो वे केवल एक अलग मूलांक / आधार में संख्या 13 और 10 हैं, आमतौर पर बेस 8 (ओक्टल) या बेस 16 (हेक्साडेसिमल)।

http://www.bluesock.org/~willg/dev/ascii.html


46

जेफ एटवुड के पास इस बारे में एक हालिया ब्लॉग पोस्ट है: द ग्रेट न्यूलाइन स्चिज्म

यहाँ विकिपीडिया से सार है :

अनुक्रम CR + LF कई प्रारंभिक कंप्यूटर प्रणालियों पर आम उपयोग में था, जो कि टेलेटाइप मशीनों को अपनाया था, आमतौर पर एक ASR33, एक कंसोल डिवाइस के रूप में, क्योंकि इस क्रम को उन प्रिंटरों को एक नई लाइन की शुरुआत में स्थान देना आवश्यक था। इन प्रणालियों पर, पाठ को अक्सर इन प्रिंटरों के साथ संगत करने के लिए नियमित रूप से रचना की जाती थी, क्योंकि डिवाइस ड्राइवरों की अवधारणा को इस तरह के हार्डवेयर विवरणों को छिपाने से अनुप्रयोग अभी तक अच्छी तरह से विकसित नहीं हुआ था; अनुप्रयोगों को टेलेटाइप मशीन से सीधे बात करनी थी और इसके सम्मेलनों का पालन करना था।दो कार्यों के अलगाव ने इस तथ्य को छुपा दिया कि प्रिंट सिर एक पंक्ति के चरित्र में अगली पंक्ति की शुरुआत तक दूर से वापस नहीं आ सकता है। यही कारण है कि अनुक्रम हमेशा सीआर के साथ पहले भेजा गया था। वास्तव में, अतिरिक्त वर्ण (बाहरी सीआर या NUL, जिन्हें अनदेखा किया जाता है) को भेजने के लिए अक्सर आवश्यक था कि प्रिंट हेड को बाएं मार्जिन पर जाने के लिए समय दिया जाए। टेलेटाइप्स को उच्च बॉड दरों के साथ कंप्यूटर टर्मिनलों द्वारा प्रतिस्थापित किए जाने के बाद भी, कई ऑपरेटिंग सिस्टम ने अभी भी इन फिल वर्णों के स्वत: भेजने का समर्थन किया, सस्ती टर्मिनलों के साथ संगतता के लिए जो प्रदर्शन को स्क्रॉल करने के लिए कई वर्ण समय की आवश्यकता होती है।


5
+1 यह इस सरल समझ से है कि मुझे हमेशा याद है कि संयोजन किस क्रम में आता है। आज भी हम इस मैकेनिकल लॉजिक को किसी भी इंकजेट-प्रिंटर में देख सकते हैं (मुझे सीखने से नफरत है क्योंकि मैं सीखना पसंद करता हूं)। मेरी अन्य मेमोरी-ट्रिक हैं: "mac; प्रेषक पर वापस लौटें" और "NewLineFeed" (यह जानने के लिए कि NL === LF और \ n को याद रखने के लिए, क्योंकि CR में पहले से ही R यह संक्षिप्त नाम है)
GitaarLAB

3
"मैं संदिग्ध हूं ... समय के लिए दो नियंत्रण कोड आवश्यक थे"। ऐसा नहीं है कि यह क्या कहता है। इसमें कहा गया है कि अतिरिक्त सीआर और एनयूएल यहां आने के लिए समय दे रहे हैं, मूल सीआरएफ नहीं।
जूलियन रूसो 5

11
@ एड्रियन क्या आप व्यक्तित्व का अनुभव लेंगे? 1) मेरे पुराने टेलेटाइप दिनों में, जिस प्रिंटर का हमने उपयोग किया है <CR><CR><LF>- निश्चित रूप से मैंने सिर्फ एक के साथ प्रयोग किया है <CR>। मैं भेजा <CR><LF>Aएक लंबी लाइन के बाद, और तुम सकता है सुना हैA पहले गाड़ी पूरी तरह से लौटे मुद्रित किया जा रहा।
जॉन बर्गर

11
@ एड्रियन 2) मत भूलो, यह इलेक्ट्रो-मैकेनिकल युग में था, जहां प्रत्येक चरित्र ने ठीक एक कार्य किया था। हमने अक्सर लाइन को प्रिंट करके एक शब्द पर जोर दिया, फिर <CR><CR>रिक्त स्थान की सही संख्या को भेजना और टाइप करना, फिर उसी शब्द को फिर से प्रिंट करना: बोल्डिंग का एक आदिम रूप।
जॉन बर्गर

3
@ एड्रियन 3) और अंत में, यह बॉडोट (या मरे कोड) का उपयोग कर रहा था, एएससीआईआई का नहीं। पांच डेटा बिट्स, एक शुरुआत बिट और एक-डेढ़ स्टॉप बिट्स के बीच। आप आधा कैसे हो सकते हैं? अगले चरित्र को भेजने के लिए शुरू करने से पहले आधे से थोड़ा समय इंतजार करके, प्रिंट हेड को केंद्र में लौटने का समय दें।
जॉन बर्गर

16

सीआर - एएससीआईआई कोड 13

LF - ASCII कोड 10।

सैद्धांतिक रूप से CR पहली स्थिति में (बाईं ओर) कर्सर लौटाता है। LF एक लाइन चलती कर्सर को एक पंक्ति नीचे खिलाती है। यह है कि पुराने दिनों में आपने प्रिंटर और टेक्स्ट-मोड मॉनिटर को कैसे नियंत्रित किया। इन वर्णों का उपयोग आमतौर पर पाठ फ़ाइलों में लाइनों के अंत को चिह्नित करने के लिए किया जाता है। विभिन्न ऑपरेटिंग सिस्टम ने विभिन्न सम्मेलनों का उपयोग किया। जैसा कि आपने बताया कि विंडोज़ CR / LF संयोजन का उपयोग करता है, जबकि पूर्व OSX Macs CR और इतने पर ही उपयोग करते हैं।


7

ASCII या संगत वर्ण सेट पर आधारित प्रणालियाँ व्यक्तिगत रूप से LF (लाइन फीड, 0x0A, 10 दशमलव में) या CR (गाड़ी वापसी, 0x0D, 13 दशमलव में) का उपयोग करती हैं, या CR उसके बाद LF (CR + LF, 0x0D 0x0A); ये वर्ण प्रिंटर कमांड पर आधारित होते हैं: लाइन फीड ने संकेत दिया था कि कागज की एक लाइन प्रिंटर से बाहर फीड होनी चाहिए, और एक गाड़ी वापसी ने संकेत दिया कि प्रिंटर गाड़ी चालू लाइन की शुरुआत में वापस आनी चाहिए।

यहाँ विवरण है


5

"रिकॉर्ड विभाजक" या "लाइन टर्मिनेटर" की उदास स्थिति कंप्यूटिंग के अंधेरे युग की विरासत है।

अब, हम इसे इस बात के लिए स्वीकार करते हैं कि जिस चीज़ का हम प्रतिनिधित्व करना चाहते हैं वह किसी तरह से संरचित डेटा है और विभिन्न अमूर्तों के अनुरूप है जो लाइनों, फाइलों, प्रोटोकॉल, संदेशों, मार्कअप को परिभाषित करते हैं, जो भी हो।

लेकिन एक बार यह बिल्कुल सच नहीं था। अनुप्रयोग अंतर्निहित नियंत्रण वर्ण और डिवाइस-विशिष्ट प्रसंस्करण। सीआर और एलएफ दोनों की आवश्यकता वाले मस्तिष्क-मृत प्रणालियों में रिकॉर्ड विभाजक या लाइन टर्मिनेटर के लिए कोई अमूर्तता नहीं थी। कॉलम एक पर लौटने के लिए टेलेटाइप या वीडियो डिस्प्ले प्राप्त करने के लिए सीआर आवश्यक था और अगली पंक्ति के लिए अग्रिम करने के लिए एलएफ (आज, एनएल, समान कोड) आवश्यक था। मुझे लगता है कि डिवाइस में कच्चे डेटा को डंप करने के अलावा कुछ करने का विचार बहुत जटिल था।

यूनिक्स और मैक वास्तव में लाइन एंड के लिए एक अमूर्तता निर्दिष्ट करते हैं, कल्पना करें कि। अफसोस की बात है, उन्होंने अलग-अलग लोगों को निर्दिष्ट किया। (यूनिक्स, अहम, पहले आया था।) और स्वाभाविक रूप से, उन्होंने एक नियंत्रण कोड का उपयोग किया जो पहले से ही एसओपी के "करीब" था

चूँकि हमारे लगभग सभी ऑपरेटिंग सॉफ्टवेयर आज यूनिक्स, मैक या MS ऑपरेटिंग SW के वंशज हैं, हम भ्रम की स्थिति से जूझ रहे हैं।


1

NL EBCDIC NL = x'15 'से व्युत्पन्न है, जो तार्किक रूप से CRLF x'odoa ascii से तुलना करेगा ... यह स्पष्ट हो जाता है जब भौतिक रूप से मेनफ्रेम से डेटा को midrange में स्थानांतरित किया जाता है। Coloquially (केवल आर्कियन लोग ईबेबिक का उपयोग करते हैं) NL को CR या LF या CRLF दोनों में से बराबर किया गया है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.