Windows CR LF का उपयोग क्यों करता है?


85

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



1
रेमंड चेन के ब्लॉग से: blogs.msdn.com/b/oldnewthing/archive/2004/03/18/91899.aspx
sashnin

यहाँ न्यूलाइन के इतिहास पर विकिपीडिया है: en.wikipedia.org/wiki/Newline#History
Szocske

यह ध्यान देने योग्य है कि विंडोज पर CRLF ज्यादातर एक सम्मेलन / डिफ़ॉल्ट है। अधिकांश कार्यक्रम या तो समर्थन करते हैं (हालांकि आपको सेटिंग्स के साथ गड़बड़ करना पड़ सकता है)। मैं व्यक्तिगत रूप से लगभग कभी भी CRLF का उपयोग नहीं करता, इसके बजाय UNIX- शैली LF के लिए चुना गया; केवल मुट्ठी भर कार्यक्रमों में अभी भी उन फ़ाइलों की समस्या है जो केवल LF का उपयोग करती हैं।
केविन

CR + LF इसे करने का सही तरीका है (यह मानक है ), इसलिए सवाल यह नहीं है कि विंडोज इसे सही ढंग से क्यों करता है लेकिन मैक और यूनिक्स / लिनक्स इसे गलत तरीके से क्यों करते हैं। स्टैंडअलोन एलएफ की विरासत आलस्य है और एक शॉर्टकट ले रही है। मैं हमेशा CR + LF को छोड़कर, कुछ लिनक्स चीजों के अलावा जो CR + LF पर gawk करता हूं, इसलिए मैं उसके लिए LF मोड में बदलता हूं। IMO, CR + LF की गलत व्याख्या एक स्टैंडअलोन LF की गलत व्याख्या करने की तुलना में बहुत खराब है।
इंटरलिंक

जवाबों:


96

उपयोग करते समय ऐतिहासिक रूप से डॉट-मैट्रिक्स प्रिंटर टेलेटिप्स CR गाड़ी को लाइन की पहली स्थिति में लौटाएगा जबकि LF अगली लाइन को फीड करेगा। फ़ाइल में CR + LF का उपयोग करके किसी भी प्रकार के प्रिंटर ड्राइवर के बिना फ़ाइल को सीधे प्रिंटर पर भेजना संभव हो गया।

धन्यवाद @ ज़ाफ़ ने बताया कि यह टेलेटाइप्स था न कि डॉट मैट्रिक्स प्रिंटर


46
बहुत कम लाभ के लिए बहुत आम झुंझलाहट।
दविद होर्वाथ

7
@ और वास्तव में यह टेलेटाइप्स था, यही कारण था, सीआर ने प्रिंट सिर को बाईं ओर लौटा दिया और एलएफ ने कागज को उन्नत किया। Teletypes डॉट-मैट्रिक्स प्रिंटर से पहले।
ज़ाफ

5
@ ज़ैफ़ इस कारण मुझे स्टैक ओवरफ़्लो से प्यार है। 2 साल बाद और मुझे एक सुधार मिला और कुछ नया सीखा।
एंडर्स हाबिल

30

@ सथानिन ने रेमंड चेन के ब्लॉग से एक URL पोस्ट किया है, लेकिन यह अब काम नहीं करता है। ब्लॉग ने अपना आंतरिक सॉफ़्टवेयर बदल दिया है, इसलिए URL बदल गए हैं।

नए ब्लॉग में पुराने पोस्ट के माध्यम से क्रॉल करने के बाद मैंने इसे यहां पाया है

ब्लॉग से उद्धरण:

लाइन टर्मिनेटर CR + LF क्यों है?

यह प्रोटोकॉल टेलेटाइपरिटर्स के दिनों में वापस आता है। CR का मतलब "कैरिज रिटर्न" है - CR कंट्रोल कैरेक्टर ने पेपर को आगे बढ़ाए बिना कॉलम 0 पर प्रिंट हेड ("कैरिज") को लौटा दिया। LF "लाइनफीड" के लिए खड़ा है - LF नियंत्रण वर्ण प्रिंट हेड को स्थानांतरित किए बिना कागज एक लाइन को उन्नत करता है। इसलिए यदि आप प्रिंट हेड को कॉलम जीरो (अगली लाइन को प्रिंट करने के लिए तैयार) और पेपर को आगे बढ़ाना चाहते हैं (तो यह ताजा पेपर पर प्रिंट करता है), आपको सीआर और एलएफ दोनों की आवश्यकता है।

यदि आप विभिन्न इंटरनेट प्रोटोकॉल दस्तावेजों, जैसे RFC 0821 (SMTP), RFC 1939 (POP), RFC 2060 (IMAP), या RFC 2616 (HTTP) पर जाते हैं, तो आप देखेंगे कि वे सभी CR + LST के रूप में निर्दिष्ट करते हैं। लाइन समाप्ति का क्रम। तो असली सवाल "सीपी / एम, एमएस-डॉस, और Win32 लाइन टर्मिनेटर के रूप में सीआर + एलएफ का उपयोग क्यों नहीं करते हैं?" लेकिन इसके बजाय "अन्य लोगों ने इन मानकों के दस्तावेज़ों से अलग और कुछ अन्य लाइन टर्मिनेटर का उपयोग क्यों किया?"

यूनिक्स ने लाइन समाप्ति के क्रम के रूप में सादे एलएफ को अपनाया। यदि आप स्टेंट के विकल्पों को देखते हैं, तो आप देखेंगे कि ऑनलर विकल्प निर्दिष्ट करता है कि क्या LF को CR + LF में बदला जाना चाहिए। यदि आपको यह सेटिंग गलत लगती है, तो आपको स्टेपस्टेप टेक्स्ट मिल जाएगा, जहां

each
    line
        begins 

जहां पिछली लाइन बंद थी। इसलिए, यहां तक ​​कि यूनिक्स, जब कच्चे मोड में छोड़ दिया जाता है, तो लाइनों को समाप्त करने के लिए सीआर + एलएफ की आवश्यकता होती है। एलएफ से पहले निहित सीआर एक यूनिक्स आविष्कार है, शायद एक अर्थव्यवस्था के रूप में, क्योंकि यह प्रति पंक्ति एक बाइट बचाता है।

C भाषा के यूनिक्स पूर्वज ने इस सम्मेलन को C भाषा मानक में ले लिया, जिसमें लाइनों को समाप्त करने के लिए केवल "\ n" (जो LF को एन्कोड करता है) की आवश्यकता होती है, कच्चे फाइल डेटा को तार्किक लाइनों में बदलने के लिए रनटाइम लाइब्रेरीज़ पर बोझ डालते हैं।

सी भाषा ने "जेनेरिक लाइन टर्मिनेटर" की अवधारणा को व्यक्त करने के लिए "न्यूलाइन" शब्द भी पेश किया। मुझे बताया गया है कि ASCII समिति ने चरित्र 0x0A का नाम बदलकर 1996 के आसपास "न्यूलाइन" कर दिया है, इसलिए भ्रम का स्तर और भी अधिक बढ़ गया है।

यहाँ विषय की एक और चर्चा है, एक यूनिक्स परिप्रेक्ष्य से

मैंने इस दूसरी कड़ी को द वेबैक मशीन में स्नैपशॉट में बदल दिया है, क्योंकि वास्तविक पृष्ठ अब उपलब्ध नहीं है।

हम उम्मीद करते है कि यह आपके सवाल का जवाब दे देगा।


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

1
ठीक है, मैंने यहां ब्लॉग से पाठ जोड़ा है, इसलिए यदि लिंक फिर से खराब हो जाता है तो पाठ अभी भी यहां उपलब्ध है। मुझे लगता है कि इसे केवल एक टिप्पणी के रूप में नहीं बल्कि एक उत्तर के रूप में रखा जाना चाहिए, क्योंकि यह जानकारी वास्तव में मूल रूप से पूछे गए प्रश्न का उत्तर देती है।
OMA

7
मैं वास्तव में जिस तरह से Microsoft नियमित रूप से उनके लिंक का पालन करता है उससे नफरत करता हूं ।
मार्क रैनसम

1
यह उत्तर एक को छोड़कर अधिक विस्तृत है और न केवल पूछे गए प्रश्न का उत्तर दिया गया है, बल्कि प्रश्न के लिए अनुमानित कारण है, IMHO यह बेहतर है।
अलेक्सई मार्टीनोव

18

यह टेलेटाइप मशीनों (और टाइपराइटर) से योर के दिनों से आता है।

ऐसा हुआ करता था कि जब आप एक पंक्ति टाइप कर रहे थे, तो आपको टाइपराइटर की गाड़ी को स्थानांतरित करना था (जो आपके पास टाइप किए गए कागज को छोड़ दिया और बाईं ओर स्लाइड करता है) लाइन (सीआर) के शुरू में वापस। फिर आपको अगली पंक्ति में जाने के लिए पेपर को एक पंक्ति (LF) के नीचे अग्रिम करना होगा।

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

लेकिन मूल रूप से, यह सम्मेलन के लिए उबलता है। डॉस ने पूर्ण सीआर / एलएफ सम्मेलन का उपयोग किया, और यूनिक्स ने इसे थोड़ा छोटा कर दिया। अब हम फंस गए हैं!


2

दूसरों ने जवाब दिया है, लेकिन मैं जोड़ना चाहता था ... मुझे लगता है कि आप एक टाइपराइटर का उपयोग करने के लिए बहुत छोटे हैं? ;) गाड़ी एक ड्रम है। इसे क्षैतिज रूप से दाएं घुमाते हुए, स्टेशनरी प्रकार के सिर को पृष्ठ के बाईं ओर वापस लाया जाता है। अपनी उंगली और अंगूठे का उपयोग करके गाड़ी को घुमाएं पृष्ठ को एक पंक्ति (ओं) से आगे बढ़ाता है।


2
टाइपराइटर? मुझे लगता है कि मैंने एक बार एक संग्रहालय में उनमें से एक को देखा :)
काइल

@ कैल मुझे हँसना पड़ा और यह मेरे दिन को रोशन कर दिया :)
जैसे 14

1

से विकिपीडिया :

यह अनुक्रम CR + LF कई प्रारंभिक कंप्यूटर प्रणालियों पर आम उपयोग में था, जो कि टेलेटाइप मशीनों को अपनाया था, आमतौर पर एक ASR33, एक कंसोल डिवाइस के रूप में, क्योंकि इस क्रम को उन प्रिंटरों को एक नई लाइन की शुरुआत में स्थान देना आवश्यक था।


1

मैंने एक से अधिक खातों को इस आशय से देखा है कि एक के बजाय दो अक्षर (और कभी-कभी अधिक) भेजने का कारण डेटा अंतरण दर को भौतिक मुद्रण दर से बेहतर मिलान करने के लिए था ( यह बहुत समय पहले था )। प्रिंट-हेड को हिलाने से एकल वर्ण को प्रिंट करने में अधिक समय लगा और अतिरिक्त वर्ण भेजने से डेटा ट्रांसफर को प्रिंटिंग डिवाइस के आगे बढ़ने से रोकने का एक तरीका था। तो विंडोज में एंड-ऑफ-लाइन के लिए हमारे पास कई अक्षर होने का कारण मूल रूप से यही कारण है कि हमारे पास QWERTY कीबोर्ड हैं - इसका उद्देश्य चीजों को धीमा करना था

जाहिर है कि यह प्रथा विंडोज में आज भी जारी है, पीछे चल रही अनुकूलता की कुछ धारणा पर आधारित है, और अंत में, बस सरल जड़ता है।

हालांकि, ध्यान दें कि ऑपरेटिंग सिस्टम स्तर पर विंडोज द्वारा इस सम्मेलन को कड़ाई से लागू नहीं किया गया है । कोई भी विंडोज़ अनुप्रयोग सम्मेलन को अनदेखा करने के लिए स्वतंत्र है, जो इस बात पर निर्भर करता है कि वह किन अन्य अनुप्रयोगों के साथ संगत होने की कोशिश कर रहा है।

दिलचस्प है, "न्यूलाइन" के बारे में विकिपीडिया लेख , दावा करता है कि विंडोज 8 केवल एलएफ का उपयोग करने के लिए एक बदलाव पेश कर सकता है। लेख में यह भी कहा गया है कि मैक ओएस एक्स ने एलएफ + सीआर से सिर्फ एलएफ तक एक संक्रमण पेश किया।


4
"धीमी गति से चीजों का इरादा" - उद्धरण की आवश्यकता।
इलियट गोरोखोवस्की

4
दरअसल, पूरे पहले पैराग्राफ - उद्धरण की जरूरत है।
इलियट गोरोखोवस्की

2
यहाँ एक बारीकी से संबंधित जेफ एटवुड लेख है जो समान विकिपीडिया सामग्री का संदर्भ देता है: द ग्रेट न्यूलाइन स्चिज्म । वहाँ बहुत सारे बुद्धिमान उपयोगकर्ता टिप्पणियां हैं - जिसमें मेरी बात की कुछ पुष्टि भी शामिल है कि यह एक ऑपरेटिंग-सिस्टम-स्तरीय चिंता नहीं है और यह कि अधिकांश विंडोज़ ऐप्स एलएफ-केवल पाठ फ़ाइलों के साथ ठीक काम करेंगे। मजेदार टिप्पणी यह ​​भी है: "विंडोज 10 सीआर / एलएफ का उपयोग करता है 1963 मॉडल 33 टेलेटाइप मशीन के साथ संगतता बनाए रखने के लिए "।
ब्रेंट बर्नबर्न

1
@ RenéG मुझे एक प्रशस्ति पत्र की आवश्यकता नहीं है, मैं वहां गया था और इसे अपने लिए देखा। कुछ शुरुआती डॉट मैट्रिक्स प्रिंटरों को अच्छे उपाय के लिए कुछ अतिरिक्त NULs की आवश्यकता होती है, क्योंकि इंटरफ़ेस की बॉड दर में वृद्धि होने के साथ-साथ सिर दो पात्र भी नहीं रख सकता है। यह समस्या बफ़रिंग के रूप में चली गई और प्रवाह नियंत्रण तस्वीर में प्रवेश कर गया, लेकिन शुरुआती प्रिंटरों में ऐसा नहीं था। अंत में जैसे ही प्रिंटर आउटपुट बने, केवल वे एक समानांतर इंटरफ़ेस में गए, जिसमें अंतर्निहित हैंडशेकिंग थी।
मार्क रैनसम

1
"लोकप्रिय धारणा के विपरीत, QWERTY लेआउट टाइपिस्ट को धीमा करने के लिए डिज़ाइन नहीं किया गया था , ..." - गुण | QWERTY - विकिपीडिया
जेसन स्पार्क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.