न्यू लाइन: Difference between revisions

From Vigyanwiki
No edit summary
Line 233: Line 233:
[[Category: Machine Translated Page]]
[[Category: Machine Translated Page]]
[[Category:Created On 06/02/2023]]
[[Category:Created On 06/02/2023]]
[[Category:Vigyan Ready]]

Revision as of 15:43, 10 March 2023

हैलो और वर्ल्ड शब्दों के बीच नई लाइन डाली गई है

न्यूलाइन (अधिकांश कहा जाता है लाइन एंडिंग, एंड ऑफ़ लाइन (ईओएल), नेक्स्ट लाइन (एनईएल) या लाइन ब्रेक) एएससीआईआई, इबीसीडीआईसी, यूनिकोड इत्यादि जैसे वर्ण एन्कोडिंग विनिर्देशों में नियंत्रण वर्ण या नियंत्रण वर्णों का अनुक्रम है। यह वर्ण, या वर्णों का क्रम, पंक्ति (पाठ फ़ाइल) के अंत और नई प्रारंभ को दर्शाने के लिए उपयोग किया जाता है।[1]


इतिहास

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

बाद में, आधुनिक टेलीप्रिंटर के युग में, सफेद स्थान पाठ स्वरूपण में सहायता के लिए मानकीकृत वर्ण सेट नियंत्रण कोड विकसित किए गए थे। ASCII को अंतर्राष्ट्रीय मानकीकरण संगठन (ISO) और अमेरिकी मानक संघ (एएसए) द्वारा साथ विकसित किया गया था, बाद वाला अमेरिकी राष्ट्रीय मानक संस्थान (अनसी) का पूर्ववर्ती संगठन था। 1963 से 1968 की अवधि के दौरान, आईएसओ ड्राफ्ट मानकों ने अकेले CR+LF या एलएफ को एक नई लाइन के रूप में उपयोग करने का समर्थन किया, जबकि एएसए ड्राफ्ट ने केवल CR+LF का समर्थन किया।

क्रम CR+LF सामान्यतः कई प्रारंभिकी कंप्यूटर प्रणाली पर उपयोग किया गया था, जिन्होंने टेलेटाइप कॉर्पोरेशन मशीनों को अपनाया था - सामान्यतः टेलेटाइप मॉडल 33 एएसआर - कंसोल डिवाइस के रूप में, क्योंकि इस क्रम को उन प्रिंटरों को नई लाइन की प्रारंभ में रखने की आवश्यकता थी। न्यूलाइन को दो कार्यों में अलग करना इस तथ्य को छुपाता है कि प्रिंट हेड अगले वर्ण को प्रिंट करने के लिए दूर दाईं ओर से अगली पंक्ति की प्रारंभ तक वापस नहीं आ सकता है। CR के बाद मुद्रित कोई भी वर्ण अधिकांश पृष्ठ के मध्य में धुंध के रूप में प्रिंट होता था चूंकि प्रिंट हेड अभी भी गाड़ी को पहली स्थिति में वापस ले जा रहा था। समाधान यह था कि गाड़ी को कॉलम एक में ले जाने के लिए न्यूलाइन दो अक्षर सीआर और पेपर को ऊपर ले जाने के लिए एलएफ बनाया जाए।।[2] वास्तव में, अधिकांश अतिरिक्त वर्ण-बाहरी सीआर या एनयूएल भेजने के लिए आवश्यक होता था-जो अनदेखा कर दिए जाते हैं लेकिन प्रिंट हेड को बाएं मार्जिन पर जाने का समय देते हैं। कई प्रारंभिकी वीडियो डिस्प्ले को भी डिस्प्ले को स्क्रॉल करने के लिए कई वर्ण बार की आवश्यकता होती है।

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

मॉलटिक्स ऑपरेटिंग प्रणाली ने 1964 में विकास प्रारंभ किया और इसका उपयोग किया LF अकेले इसकी नई लाइन के रूप में। मल्टिक्स ने इस वर्ण का अनुवाद करने के लिए डिवाइस ड्राइवर का उपयोग किया, जो प्रिंटर की आवशयकता के किसी भी क्रम में (अतिरिक्त पैडिंग वर्णों सहित), और एकल बाइट प्रोग्रामिंग के लिए अधिक सुविधाजनक था। क्या अधिक स्पष्ट प्रतीत होता है पसंद-CR- उपयोग नहीं किया गया था, जैसा CR जोर (टाइपोग्राफी), बल देना और स्ट्रिकथ्रौघ प्रभाव बनाने के लिए पंक्ति को दूसरे के साथ ओवरप्रिंट करने का उपयोगी कार्य प्रदान किया था। संभवतः अधिक महत्वपूर्ण, का उपयोग LF अकेले लाइन टर्मिनेटर के रूप में पहले से ही अंतिम आईएसओ/आईईसी 646 मानक के मसौदे में सम्मिलित किया गया था। यूनिक्स ने मल्टिक्स अभ्यास का पालन किया, और बाद में यूनिक्स जैसी प्रणालियों ने यूनिक्स का अनुसरण किया। इसने विंडोज और यूनिक्स जैसे ऑपरेटिंग प्रणाली के बीच संघर्ष उत्पन्न किया, जिससे ऑपरेटिंग प्रणाली पर बनी फाइलों को दूसरे ऑपरेटिंग प्रणाली द्वारा उचित रूप से स्वरूपित या व्याख्या नहीं किया जा सकता था (उदाहरण के लिए माइक्रोसॉफ्ट नोटपैड जैसे विंडोज अवतरण एडिटर में लिखी गई UNIX शेल स्क्रिप्ट)[3][4]).

प्रतिनिधित्व

कैरिज रिटर्न (सीआर) और लाइन फीड (एलएफ) की अवधारणाएं निकट से जुड़ी हुई हैं और इन्हें अलग-अलग या साथ माना जा सकता है। टाइपराइटर और प्रिंटर (कंप्यूटिंग) के भौतिक मीडिया में, पृष्ठ (पेपर) पर नई पंक्ति बनाने के लिए गति के दो कार्टेशियन समन्वय प्रणाली, नीचे और आर-पार, की आवश्यकता होती है। चूंकिएक मशीन (टाइपराइटर या प्रिंटर) के डिजाइन को उन्हें अलग से विचार करना चाहिए, सॉफ्टवेयर का अमूर्त तर्क उन्हें एक साथ एक घटना के रूप में जोड़ सकता है। यही कारण है कि वर्ण एन्कोडिंग में नई पंक्ति को CR और LF के रूप में (सामान्यतः कहा जाता है CR+LF या CRLF) परिभाषित किया जा सकता है.

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

सॉफ़्टवेयर एप्लिकेशन और ऑपरेटिंग सिस्टम एक या दो नियंत्रण वर्णों के साथ एक नई पंक्ति का प्रतिनिधित्व करते हैं
प्रचालन तंत्र अक्षरों को सांकेतिक अक्षरों में बदलना शब्द-संक्षेप हेक्स मान डेक मान बचने का क्रम
यूनिक्स और यूनिक्स जैसी प्रणालियाँ (लिनक्स, माकोस, फ्रीबीएसडी, ऐक्स, ज़ेनिक्स, आदि.), मल्टिक्स, बीओएस, अमिगा, आरआईएससी ओएस, और अन्य[5] ASCII LF 0A 10 \n
माइक्रोसॉफ्ट विंडोज, डॉस (एमएस-डॉस, पीसी डॉस, आदि), अटारी टीओएस, डेक टॉप्स-10, RT-11, CP/M, MP/M, OS/2, सिम्बियन ओएस, पाम ओएस, एमस्ट्राड सीपीसी, और अधिकांश अन्य प्रारम्भिक गैर-यूनिक्स और गैर-आईबीएम प्रचालन प्रणाली CR LF 0D 0A 13 10 \r\n
कप्रणालीोर 8-बिट मशीन (C64, C128), एकॉर्न बीबीसी, जेडएक्स स्पेक्ट्रम, टीआरएस-80, एप्पल द्वितीय श्रृंखला, ओबेरोन, क्लासिक मैक ओएस, एमआईटी लिस्प मशीन और ओएस-9 CR 0D 13 \r
क्यूएनएक्स पूर्व-पोसिक्स कार्यान्वयन (संस्करण <4) RS 1E 30 \036
एकोर्न बीबीसी[6] और आरआईएससी ओएस ने अवतरण आउटपुट स्पूल किया[7] LF CR 0A 0D 10 13 \n\r
अटारी 8-बिट मशीनें ATASCII 9B 155
आईबीएम मेनफ्रेम सिस्टम, z/OS (OS/390) and आईबीएम आई (OS/400) सहित ईबीसीडीआईसी NL 15 21 \025
जेडएक्स80 and जेडएक्स81 (सिनक्लेयर रिसर्च लिमिटेड से घरेलू कंप्यूटर) एक विशिष्ट गैर-ASCII वर्ण सेट का उपयोग किया न्यूलाइन 76 118
  • ईबीसीडीआईसी प्रणाली- मुख्य रूप से आईबीएम मेनफ्रेम प्रणाली, जिसमें z/OS (OS/390) और आईबीएम आई (OS/400) सम्मिलित हैं- NL (नई पंक्ति, 0x15)[8] का उपयोग लाइन फीड और कैरिज रिटर्न के कार्यों के संयोजन वाले वर्ण के रूप में करते है। समतुल्य यूनिकोड वर्ण (0x85) को NEL (अगली पंक्ति) कहा जाता है। ईबीसीडीआईसी में CR और LF नामक नियंत्रण वर्ण भी कहा जाता है, लेकिन LF (0x25) का संख्यात्मक मान ASCII (0x0A) द्वारा उपयोग किए गए से भिन्न है। इसके अतिरिक्त, कुछ ईबीसीडीआईसी वैरिएंट भी NL का उपयोग करते हैं लेकिन वर्ण को अलग संख्यात्मक कोड असाइन करें। चूँकि, वे ऑपरेटिंग प्रणाली रिकॉर्ड-उन्मुख फ़ाइल प्रणाली प्रणाली का उपयोग करते हैं, जो पाठ फ़ाइलों को प्रति पंक्ति रिकॉर्ड के रूप में संग्रहीत करता है। अधिकांश फ़ाइल स्वरूपों में, कोई लाइन टर्मिनेटर वास्तव में संग्रहीत नहीं होते हैं।
  • सीडीसी 6000 श्रृंखला के लिए ऑपरेटिंग प्रणाली ने 60-बिट शब्द के अंत में दो या दो से अधिक शून्य-मूल्य वाले छह-बिट वर्णों के रूप में नई पंक्ति को परिभाषित किया गया था। कुछ विन्यासों ने शून्य-मूल्यवान वर्ण को बृहदान्त्र (विराम चिह्न) वर्ण के रूप में भी परिभाषित किया, जिसके परिणामस्वरूप स्थिति के आधार पर कई कॉलनों को नई पंक्ति के रूप में व्याख्या किया जा सकता है।
  • RSX-11 और ओपनवीएमएस भी रिकॉर्ड-आधारित फ़ाइल प्रणाली का उपयोग करते हैं, जो प्रति पंक्ति रिकॉर्ड के रूप में पाठ फ़ाइलों को संग्रहीत करता है। अधिकांश फ़ाइल स्वरूपों में, कोई लाइन टर्मिनेटर वास्तव में संग्रहीत नहीं होते हैं, लेकिन रिकॉर्ड प्रबंधन सेवा सुविधा पारदर्शी रूप से प्रत्येक पंक्ति में टर्मिनेटर जोड़ सकती है, जब इसे किसी एप्लिकेशन द्वारा पुनर्प्राप्त किया जाता है। रिकॉर्ड में स्वयं समान लाइन टर्मिनेटर वर्ण हो सकते हैं, जिन्हें या तो विशेषता या उपद्रव माना जा सकता है जो कि आवेदन पर निर्भर करता है। RMS न केवल रिकॉर्ड संग्रहीत करता है, किन्तु फ़ाइल के लिए अलग-अलग बिट्स में रिकॉर्ड विभाजक के बारे में मेटाडेटा भी संग्रहीत करता है, जिससे स्थितियों और भी जटिल हो जाते हैं (चूंकि फ़ाइलों में निश्चित लंबाई के रिकॉर्ड हो सकते हैं, ऐसे रिकॉर्ड जो गिनती या रिकॉर्ड द्वारा समाप्त होते हैं जो विशिष्ट वर्ण द्वारा समाप्त होते हैं ). बिट्स सामान्य नहीं हैं, इसलिए जब वे इसे निर्दिष्ट कर सकते हैं CRLF या LF या और भी CR लाइन टर्मिनेटर है, वे किसी अन्य कोड को स्थानापन्न नहीं कर सकते।
  • फिक्स्ड लाइन लेंथ का उपयोग कुछ प्रारंभिकी मेनफ़्रेम कंप्यूटर ऑपरेटिंग प्रणाली द्वारा किया जाता था। ऐसी प्रणाली में, उदाहरण के लिए, प्रत्येक 72 या 80 वर्णों में निहित अंत-पंक्ति मान ली गई थी। कोई न्यूलाइन वर्ण संग्रहीत नहीं किया गया था। यदि कोई फ़ाइल बाहरी संसार से आयात की गई थी, तो लाइन की लंबाई से छोटी लाइनों को रिक्त स्थान के साथ पैडेड करना पड़ता था, चूंकि लाइन की लंबाई से अधिक लंबी लाइनों को छोटा करना पड़ता था। इसने छिद्रित कार्डों के उपयोग की नकल की, जिस पर प्रत्येक पंक्ति को अलग कार्ड पर संग्रहीत किया गया था, सामान्यतः प्रत्येक कार्ड पर 80 कॉलम के साथ, अधिकांश कॉलम 73-80 में अनुक्रम संख्या के साथ। इनमें से कई प्रणालियों ने अगले रिकॉर्ड की प्रारंभ में एएसए कैरिज नियंत्रण वर्ण जोड़े; यह निरुपित कर सकता है कि क्या अगला रिकॉर्ड पिछले रिकॉर्ड, या नई लाइन द्वारा प्रारंभ की गई लाइन की निरंतरता थी, या पिछली पंक्ति को ओवरप्रिंट करना चाहिए (के समान) CR). अधिकांश यह सामान्य मुद्रण वर्ण होता था जैसे # इस प्रकार पंक्ति में पहले वर्ण के रूप में उपयोग नहीं किया जा सकता था। कुछ प्रारंभी लाइन प्रिंटरों ने इन वर्णों की सीधे उन्हें भेजे गए रिकॉर्ड में व्याख्या की।

यूनिकोड

यूनिकोड मानक कई वर्णों को परिभाषित करता है जो अनुरूप अनुप्रयोगों को लाइन टर्मिनेटर के रूप में पहचानना चाहिए:[9]

 LF:    रेखा भरण, U+000A
 VT:    वर्टिकल टैब, U+000B
 FF:    फ़ीड बनाएं, U+000C
 CR:    कैरिज रिटर्न, U+000D
 CR+LF: CR (U+000D) के बाद LF (U+000A)
 NEL:   अगली पंक्ति, U+0085
 LS:    रेखा विभाजक, U+2028
 PS:    अनुच्छेद विभाजक, U+2029

उदाहरण के लिए, सभी लाइन टर्मिनेटरों को वर्ण में परिवर्तित करने जैसे दृष्टिकोण की तुलना में यह अत्यधिक जटिल लग सकता है LF. चूंकि, यूनिकोड को किसी अवतरण फ़ाइल को किसी भी वर्तमान एन्कोडिंग से यूनिकोड में और वापस कनवर्ट करते समय सभी सूचनाओं को संरक्षित करने के लिए डिज़ाइन किया गया था। इसलिए, यूनिकोड में वर्तमान एनकोडिंग में सम्मिलित वर्ण होने चाहिए।

उदाहरण के लिए: NL ईबीसीडीआईसी का हिस्सा है, जो कोड का उपयोग करता है 0x15; यह सामान्यतः यूनिकोड में मैप किया जाता है NEL, 0x85, जो C1 कंट्रोल सेट में कंट्रोल कैरेक्टर है।[10] जैसे, यह ईसीएमए 48 द्वारा परिभाषित किया गया है,[11] और ISO/IEC 2022 (जो ECMA 35 के समतुल्य है) के अनुरूप एनकोडिंग द्वारा मान्यता प्राप्त है।[12] C1 नियंत्रण सेट ISO-8859-1 के साथ भी संगत है।[citation needed] यूनिकोड मानक में अपनाया गया दृष्टिकोण सभी संभावित प्रकार के लाइन टर्मिनेटरों को पहचानने के लिए अनुप्रयोगों को सक्षम करते हुए राउंड-ट्रिप परिवर्तन को सूचना-संरक्षण करने की अनुमति देता है।

से अधिक न्यूलाइन कोड को पहचानना और उपयोग करना 0x7F (NEL, LS और PS) अधिकांश नहीं किया जाता है। वे यूटीएफ-8 -8 में कई बाइट हैं, और कोड के लिए NEL दीर्घवृत्त के रूप में उपयोग किया गया है () विंडोज-1252 में वर्ण। उदाहरण के लिए:

  • ईसीएमएस्क्रिप्ट स्वीकार करता है LS और PS लाइन-ब्रेक के रूप में,[13] लेकिन मानता है U+0085 (NEL) लाइन-ब्रेक के अतिरिक्त व्हाइटस्पेस वर्ण[14]
  • विंडोज 10 इनमें से किसी का भी इलाज NEL, LS, या PS अपने डिफ़ॉल्ट अवतरण एडिटर, माइक्रोसॉफ्ट नोटपैड में लाइन-ब्रेक के रूप में नहीं करता है।
  • जीएडिट, जनोमे डेस्कटॉप वातावरण का डिफ़ॉल्ट पाठ संपादक, ट्रीट करता है LS और PS न्यूलाइन NEL के रूप में लेकिन के लिए नहीं है।
  • जेएसओएन[15] अनुमति देता है LS और PS तार के अन्दर वर्ण, चूंकि एकमास्क्रिप्ट से पहले ES2019[16][17] उन्हें न्यूलाइन्स और इसलिए अवैध सिंटैक्स के रूप में माना।[18]
  • वाईएएमएल[19] JSON के साथ संगत होने के लिए अब उन्हें संस्करण 1.2 के रूप में विशेष के रूप में नहीं पहचानता है।

ध्यान दें कि यूनिकोड विशेष वर्ण U+2424 (SYMBOL FOR NEWLINE, ), U+23CE (RETURN SYMBOL, ), U+240D (SYMBOL FOR CARRIAGE RETURN, ) और U+240A (लाइन फीड के लिए प्रतीक, ) दस्तावेज़ के पाठक के लिए उपयोगकर्ता-दिखाई देने वाले वर्ण को प्रस्तुत करने के लिए ग्लिफ़ हैं, और इस प्रकार खुद को नई पंक्ति के रूप में मान्यता नहीं दी जाती है।

प्रोग्रामिंग भाषाओं में

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

सी (प्रोग्रामिंग भाषा) बचने का क्रम प्रदान करती है '\n' (न्यूलाइन) और '\r' (कैरिज रिटर्न)। चूँकि, इन्हें ASCII के समकक्ष होने की आवश्यकता नहीं है LF और CR नियंत्रण वर्ण। सी मानक केवल दो चीजों की गारंटी देता है:

  1. इनमें से प्रत्येक एस्केप सीक्वेंस अद्वितीय कार्यान्वयन-परिभाषित संख्या में मैप करता है जिसे एकल में संग्रहीत किया जा सकता है char कीमत।
  2. अवतरण प्रणाली में फाइल, डिवाइस नोड, या सॉकेट / फीफो में लिखते समय, '\n' प्रणाली द्वारा उपयोग किए जाने वाले मूल न्यूलाइन अनुक्रम में पारदर्शी रूप से अनुवादित है, जो वर्ण से अधिक लंबा हो सकता है। अवतरण प्रणाली में पढ़ते समय, नेटिव न्यूलाइन सीक्वेंस को वापस ट्रांसलेट किया जाता है '\n'. बाइनरी प्रणाली में, कोई अनुवाद नहीं किया जाता है, और आंतरिक प्रतिनिधित्व इसके द्वारा निर्मित होता है '\n' सीधे आउटपुट है।

यूनिक्स प्लेटफॉर्म पर, जहां सी की उत्पत्ति हुई, मूल न्यूलाइन अनुक्रम ASCII है LF (0x0A), इसलिए '\n' बस उस मूल्य के रूप में परिभाषित किया गया था। आंतरिक और बाहरी प्रतिनिधित्व समान होने के साथ, अवतरण प्रणाली में किया गया अनुवाद एनओपी (कोड) है, और यूनिक्स में अवतरण प्रणाली या बाइनरी प्रणाली की कोई धारणा नहीं है। इसने कई प्रोग्रामरों को यूनिक्स प्रणाली पर अपने सॉफ़्टवेयर को विकसित करने के लिए पूरी तरह से भेद को अनदेखा करने का कारण बना दिया है, जिसके परिणामस्वरूप कोड विभिन्न प्लेटफार्मों के लिए पोर्टेबल नहीं है।

सी पुस्तकालय फलन fgets() बाइनरी प्रणाली में सबसे अच्छा बचा है क्योंकि यूनिक्स न्यूलाइन कन्वेंशन के साथ नहीं लिखी गई कोई भी फाइल गलत होगी। साथ ही, अवतरण प्रणाली में, कोई भी फाइल जो प्रणाली के नेटिव न्यूलाइन सीक्वेंस (जैसे कि यूनिक्स प्रणाली पर बनाई गई फाइल, फिर विंडोज प्रणाली में कॉपी की गई) के साथ नहीं लिखी गई है, उसे भी गलत विधियों से पढ़ा जाएगा।

और सामान्य समस्या का उपयोग है '\n' ASCII के उपयोग को अनिवार्य करने वाले इंटरनेट प्रोटोकॉल का उपयोग करते हुए संचार करते समय CR+LF समाप्त होने वाली पंक्तियों के लिए। लिखना '\n' अवतरण प्रणाली स्ट्रीम के लिए विंडोज प्रणाली पर सही ढंग से काम करता है, लेकिन केवल उत्पादन करता है LF यूनिक्स पर, और अधिक विदेशी प्रणालियों पर कुछ पूरी तरह से अलग। का उपयोग करते हुए "\r\n" बाइनरी प्रणाली में थोड़ा उत्तम है।

कई भाषाएँ, जैसे C++, पर्ल,[20] और हास्केल (प्रोग्रामिंग भाषा) की समान व्याख्या प्रदान करते हैं और '\n' C. C++ में इनपुट/आउटपुट (C++)वैकल्पिक I/O मॉडल है जहां मैनिपुलेटर std::endl नई लाइन को आउटपुट करने के लिए उपयोग किया जा सकता है (और स्ट्रीम बफर को फ्लश करता है)।

जावा (प्रोग्रामिंग भाषा), पीएचपी,[21] और पायथन (प्रोग्रामिंग भाषा)[22] प्रदान करना '\r\n' अनुक्रम (एएससीआईआई के लिए CR+LF). सी के विपरीत, इन्हें मूल्यों का प्रतिनिधित्व करने की गारंटी है U+000D और U+000A, क्रमश।

जावा I/O पुस्तकालय इन्हें इनपुट या आउटपुट पर प्लेटफ़ॉर्म-निर्भर न्यूलाइन अनुक्रमों में पारदर्शी रूप से अनुवादित नहीं करते हैं। इसके अतिरिक्त, वे पूर्ण पंक्ति लिखने के लिए कार्य प्रदान करते हैं जो स्वचालित रूप से देशी न्यूलाइन अनुक्रम जोड़ते हैं, और उन पंक्तियों को पढ़ने के लिए कार्य करते हैं जो इनमें से किसी को भी स्वीकार करते हैं CR, LF, या CR+LF लाइन टर्मिनेटर के रूप में (देखें BufferedReader.readLine()). System.lineSeparator() }} विधि का उपयोग अंतर्निहित रेखा विभाजक को पुनः प्राप्त करने के लिए किया जा सकता है।

उदाहरण:

 String eol = System.lineSeparator();
 String lineColor = "Color: Red" + eol;

पढ़ने के लिए फ़ाइल खोलते समय, मॉड्यूल आयात करते समय और फ़ाइल निष्पादित करते समय पायथन यूनिवर्सल न्यूलाइन सपोर्ट की अनुमति देता है।[23]

कुछ भाषाओं ने प्रोग्राम निष्पादन के समय न्यूलाइन की सुविधा के लिए विशेष चर (कंप्यूटर विज्ञान), स्थिरांक (कंप्यूटर प्रोग्रामिंग), और सबरूटीन्स बनाए हैं। PHP और पर्ल जैसी कुछ भाषाओं में, सभी एस्केप सीक्वेंस के लिए एस्केप प्रतिस्थापन करने के लिए डबल उद्धरण की आवश्यकता होती है, जिसमें सम्मिलित हैं '\n' और '\r'. PHP में, पोर्टेबिलिटी की समस्याओं से बचने के लिए, PHP_EOL स्थिरांक का उपयोग करके न्यूलाइन अनुक्रम जारी किए जाने चाहिए।[24]

सी शार्प (प्रोग्रामिंग भाषा) में उदाहरण सी#:

string eol = Environment.NewLine;
string lineColor = "Color: Red" + eol;
   
string eol2 = "\n";
string lineColor2 = "Color: Blue" + eol2;

विभिन्न न्यूलाइन प्रारूपों के साथ उद्देश

जीएडिट के साथ बनाई गई और हेक्स संपादक के साथ देखी गई पाठ फ़ाइल। पाठ वस्तुओं के अतिरिक्त, हेक्साडेसिमल मान 0A के साथ केवल EOL मार्कर हैं।

विभिन्न न्यूलाइन सम्मेलनों के कारण विभिन्न प्रकार की प्रणालियों के बीच स्थानांतरित की गई पाठ फ़ाइलें गलत विधियों से प्रदर्शित होती हैं।

यूनिक्स-जैसे या क्लासिक मैक ओएस पर सामान्य प्रोग्राम के साथ बनाई गई फाइलों में अवतरण, एमएस-डॉस और माइक्रोसॉफ्ट विंडोज के लिए सामान्य प्रोग्रामों पर लंबी लाइन के रूप में दिखाई देता है क्योंकि ये भी line feed या carriage return लाइन ब्रेक के रूप में प्रदर्शित नहीं करते हैं।

इसके विपरीत, यूनिक्स जैसी प्रणाली पर विंडोज कंप्यूटर से उत्पन्न होने वाली फाइल को देखते समय, अतिरिक्त CR दूसरी पंक्ति विराम के रूप में प्रदर्शित किया जा सकता है, जैसे ^M, या के रूप में <cr> प्रत्येक पंक्ति के अंत में।

इसके अतिरिक्त, पाठ संपादकों के अतिरिक्त अन्य प्रोग्राम फ़ाइल को स्वीकार नहीं कर सकते हैं, उदा. कुछ कॉन्फ़िगरेशन फ़ाइल, मान्य फ़ाइल के रूप में विदेशी न्यूलाइन कन्वेंशन का उपयोग करके एन्कोडेड।

समस्या का पता लगाना कठिन हो सकता है क्योंकि कुछ प्रोग्राम विदेशी न्यूलाइन्स को ठीक से संभालते हैं चूंकि अन्य नहीं। उदाहरण के लिए, संकलक अस्पष्ट सिंटैक्स त्रुटियों के साथ विफल हो सकता है, चाहे कमांड लाइन इंटरफेस या अवतरण एडिटर में प्रदर्शित होने पर स्रोत फ़ाइल सही दिखती हो। आधुनिक पाठ संपादक सामान्यतः सभी स्वादों को पहचानते हैं CR+LF न्यूलाइन्स और उपयोगकर्ताओं को विभिन्न मानकों के बीच रूपांतरण करने की अनुमति देता है। वेब ब्राउज़र सामान्यतः पाठ फ़ाइलों और वेबसाइटों को प्रदर्शित करने में भी सक्षम होते हैं जो विभिन्न प्रकार की न्यूलाइन्स का उपयोग करते हैं।

यहां तक ​​कि यदि कोई प्रोग्राम विभिन्न न्यूलाइन सम्मेलनों का समर्थन करता है, तो इन सुविधाओं को अधिकांश पर्याप्त रूप से लेबल, वर्णित या प्रलेखित नहीं किया जाता है। सामान्यतः विभिन्न न्यूलाइन सम्मेलनों की गणना करने वाला मेनू या कॉम्बो-बॉक्स बिना किसी संकेत के उपयोगकर्ताओं को प्रदर्शित किया जाएगा यदि चयन फिर से व्याख्या करेगा, अस्थायी रूप से परिवर्तित होगा, या स्थायी रूप से नईलाइनों को परिवर्तित करेगा। कुछ प्रोग्राम ओपन, कॉपी, पेस्ट, या सेव—अधिकांश असंगत रूप से परोक्ष रूप से रूपांतरित हो जाएंगे।

अधिकांश अवतरणुअल इंटरनेट प्रोटोकॉल (कंप्यूटिंग) (HTTP, सरल डाक स्थानांतरण प्रोटोकॉल, फाइल ट्रांसफर प्रोटोकॉल, इंटरनेट रिले चैट और कई अन्य सहित) ASCII के उपयोग को अनिवार्य करते हैं। CR+LF ('\r\n', 0x0D 0x0A) प्रोटोकॉल स्तर पर, लेकिन अनुशंसा करते हैं कि सहिष्णु अनुप्रयोग अकेले को पहचानें LF ('\n', 0x0A) भी। निर्धारित मानक के अतिरिक्त, कई एप्लिकेशन गलती से C (प्रोग्रामिंग लैंग्वेज) न्यूलाइन एस्केप सीक्वेंस का उपयोग करते हैं '\n' (LF) कैरिज रिटर्न एस्केप और न्यूलाइन एस्केप सीक्वेंस के सही संयोजन के अतिरिक्त '\r\n' (CR+LF) (उपरोक्त प्रोग्रामिंग भाषाओं में अनुभाग देखें)। सुझाए गए सहिष्णु व्याख्या के अतिरिक्त मानकों की सख्त व्याख्या का पालन करने वाले प्रणाली के साथ संवाद करने की कोशिश करते समय गलत एस्केप सीक्वेंस का यह आकस्मिक उपयोग समस्याओं की ओर ले जाता है। ऐसी ही असहिष्णु प्रणाली है qmail मेल ट्रांसफर एजेंट जो बिना संदेश भेजने वाले प्रणाली से संदेशों को स्वीकार करने से सक्रिय रूप से मना कर देता है LF आवश्यक के अतिरिक्त CR+LF.[25] मानक इंटरनेट संदेश प्रारूप[26] ईमेल स्टेट्स के लिए: CR और LF केवल CRLF के रूप में साथ होने चाहिए; उन्हें शरीर में स्वतंत्र रूप से प्रकट नहीं होना चाहिए।

एएससीआईआई प्रणाली में स्थानांतरण होने पर फाइल ट्रांसफर प्रोटोकॉल ऑपरेटिंग प्रणाली के बीच विभिन्न न्यूलाइन प्रस्तुतियों के साथ स्थानांतरित की जा रही फाइलों में नई लाइनों को स्वचालित रूप से परिवर्तित कर सकता है। चूँकि, इस प्रणाली में बाइनरी फ़ाइलों को स्थानांतरित करने के सामान्यतः विनाशकारी परिणाम होते हैं: न्यूलाइन बाइट अनुक्रम की कोई भी घटना - जिसमें इस संदर्भ में लाइन टर्मिनेटर शब्दार्थ नहीं है, लेकिन बाइट्स के सामान्य अनुक्रम का हिस्सा है - जो भी न्यूलाइन प्रतिनिधित्व के लिए अनुवादित किया जाएगा दूसरी प्रणाली प्रभावी रूप से डेटा भ्रष्टाचार फ़ाइल का उपयोग करती है। एफ़टीपी ग्राहक अधिकांश द्विआधारी या एएससीआईआई प्रणाली का चयन करने के लिए कुछ ह्यूरिस्टिक (कंप्यूटर विज्ञान) (उदाहरण के लिए, फ़ाइल नाम एक्सटेंशन का निरीक्षण) को नियोजित करते हैं, लेकिन अंत में यह सुनिश्चित करने के लिए उपयोगकर्ताओं पर निर्भर है कि उनकी फाइलें सही प्रणाली में स्थानांतरित की गई हैं। यदि सही प्रणाली के बारे में कोई संदेह है, तो बाइनरी प्रणाली का उपयोग किया जाना चाहिए, क्योंकि तब एफ़टीपी द्वारा कोई फ़ाइल नहीं बदली जाएगी, चूंकि वे गलत विधियों से प्रदर्शित हो सकती हैं।[27]


न्यूलाइन प्रारूपों के बीच रूपांतरण

पाठ संपादकों का उपयोग अधिकांश पाठ फ़ाइल को विभिन्न न्यूलाइन स्वरूपों के बीच परिवर्तित करने के लिए किया जाता है; अधिकांश आधुनिक संपादक कम से कम भिन्न ASCII का उपयोग करके फ़ाइलों को पढ़ और लिख सकते हैं CR/LF सम्मेलनों।

उदाहरण के लिए, संपादक विम (पाठ संपादक) विंडोज नोटपैड अवतरण एडिटर के साथ संगत फाइल बना सकता है। विम के अन्दर

:set fileformat=dos
:wq

बड़ी फ़ाइलों को परिवर्तित करने या कई फ़ाइलों के बल्क रूपांतरण के लिए संपादक अनुपयुक्त हो सकते हैं। बड़ी फ़ाइलों के लिए (विंडोज NT/2000/XP पर) निम्नलिखित कमांड का प्रयोग अधिकांश किया जाता है:

D:\>TYPE unix_file | FIND /V "" > dos_file

विभिन्न न्यूलाइन सम्मेलनों के बीच फ़ाइलों को परिवर्तित करने के लिए विशेष प्रयोजन कार्यक्रमों में unix2dos और dos2unix, mac2unix और unix2mac, mac2dos और dos2mac, और flip सम्मिलित हैं।[28] tr }} कमांड वस्तुतः हर यूनिक्स जैसी प्रणाली पर उपलब्ध है और इसका उपयोग एकल वर्णों पर स्वैच्छिक प्रतिस्थापन संचालन करने के लिए किया जा सकता है। एक DOS/विंडोज पाठ फ़ाइल को सभी ASCII CR वर्णों को हटाकर यूनिक्स प्रारूप में परिवर्तित किया जा सकता है

$ tr -d '\r' < inputfile > outputfile

या, यदि पाठ में केवल है CR न्यूलाइन, सभी को परिवर्तित करके CR न्यूलाइन्स टू LF साथ

$ tr '\r' '\n' < inputfile > outputfile

यदि प्लेटफ़ॉर्म में पर्ल दुभाषिया है, तो वही कार्य कभी-कभी awk, sed, या Perl में किए जाते हैं:

$ awk '{sub("$","\r\n"); printf("%s",$0);}' inputfile > outputfile  # UNIX to DOS  (adding CRs on Linux and BSD based OS that haven't GNU extensions)
$ awk '{gsub("\r",""); print;}' inputfile > outputfile              # DOS to UNIX  (removing CRs on Linux and BSD based OS that haven't GNU extensions)
$ sed -e 's/$/\r/' inputfile > outputfile              # UNIX to DOS  (adding CRs on Linux based OS that use GNU extensions)
$ sed -e 's/\r$//' inputfile > outputfile              # DOS  to UNIX (removing CRs on Linux based OS that use GNU extensions)
$ perl -pe 's/\r?\n|\r/\r\n/g' inputfile > outputfile  # Convert to DOS
$ perl -pe 's/\r?\n|\r/\n/g'   inputfile > outputfile  # Convert to UNIX
$ perl -pe 's/\r?\n|\r/\r/g'   inputfile > outputfile  # Convert to old Mac

file }} कमांड लाइन के अंत के प्रकार की पहचान कर सकता है:

 $ file myfile.txt
 myfile.txt: ASCII English text, with CRLF line terminators

यूनिक्स grep#Implementations (विस्तारित ग्रेप) कमांड का उपयोग यूनिक्स या डॉस फाइलों के फ़ाइलनामों को प्रिंट करने के लिए किया जा सकता है (केवल यूनिक्स और डॉस-शैली फ़ाइलों को मानते हुए, कोई क्लासिक मैक ओएस-शैली फ़ाइलें नहीं):

$ egrep -L '\r\n' myfile.txt # show UNIX style file (LF terminated)
$ egrep -l '\r\n' myfile.txt # show DOS style file (CRLF terminated)

अन्य उपकरण उपयोगकर्ता को ईओएल वर्णों की कल्पना करने की अनुमति देते हैं:

$ od -a myfile.txt
$ cat -e myfile.txt
$ cat -v myfile.txt
$ hexdump -c myfile.txt

व्याख्या

न्यूलाइन्स को देखने के दो विधियों हैं, जिनमें से दोनों आत्मनिर्भर हैं, न्यूलाइन्स या तो अलग लाइनें हैं या वे लाइनों को समाप्त करती हैं। यदि किसी नई पंक्ति को विभाजक माना जाता है, तो फ़ाइल की अंतिम पंक्ति के बाद कोई नई पंक्ति नहीं होगी। कुछ प्रोग्रामों में फ़ाइल की अंतिम पंक्ति को संसाधित करने में समस्याएँ होती हैं यदि इसे किसी नई पंक्ति द्वारा समाप्त नहीं किया जाता है। दूसरी ओर, प्रोग्राम जो आशा करते हैं कि न्यूलाइन को विभाजक के रूप में उपयोग किया जाएगा, नई (खाली) लाइन प्रारंभ करने के रूप में अंतिम न्यूलाइन की व्याख्या करेगा। इसके विपरीत, यदि नई पंक्ति को टर्मिनेटर माना जाता है, तो अंतिम सहित सभी पाठ पंक्तियों को नई पंक्ति द्वारा समाप्त किए जाने की आशा है। यदि पाठ फ़ाइल में अंतिम वर्ण क्रम कोई नई पंक्ति नहीं है, तो फ़ाइल की अंतिम पंक्ति को अनुचित या अपूर्ण पाठ पंक्ति माना जा सकता है, या फ़ाइल को अनुचित रूप से छोटा माना जा सकता है।

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

उल्टा और आंशिक लाइन फ़ीड्स

RI, (यूनिकोड+008डी रिवर्स लाइन फीड,[29] ISO/IEC 6429 8D, दशमलव 141) का उपयोग मुद्रण स्थिति को पंक्ति पीछे ले जाने के लिए किया जाता है (कागज को उल्टा करके, या डिस्प्ले कर्सर को पंक्ति ऊपर ले जाकर) जिससे अन्य वर्ण वर्तमान पाठ पर मुद्रित किए जा सकें। यह उन्हें बोल्डर बनाने के लिए किया जा सकता है, या अंडरलाइन, स्ट्राइक-थ्रू या अन्य वर्ण जैसे विशेषक जोड़ने के लिए किया जा सकता है।

इसी प्रकार, PLD (यूनिकोड+008बी आंशिक लाइन आगे, दशमलव 139) और PLU (यूनिकोड+008सी पार्टियल लाइन बैकवर्ड, डेसीमल 140) का उपयोग वर्टिकल लाइन स्पेसिंग (सामान्यतः, आधा) के कुछ अंश द्वारा अवतरण प्रिंटिंग स्थिति को आगे बढ़ाने या उलटने के लिए किया जा सकता है। इनका उपयोग सबस्क्रिप्ट्स (आगे बढ़ने और फिर उलटने से) और सुपरस्क्रिप्ट्स (रिवर्सिंग और फिर आगे बढ़ने के द्वारा) के संयोजन में किया जा सकता है, और यह डायक्रिटिक्स को प्रिंट करने के लिए भी उपयोगी हो सकता है।

यह भी देखें

संदर्भ

  1. "What is a Newline?". www.computerhope.com (in English). Retrieved 2021-05-10.
  2. Qualline, Steve (2001). Vi Improved - Vim (PDF). Sams Publishing. p. 120. ISBN 9780735710016. Archived from the original (PDF) on 8 April 2022. Retrieved 4 January 2023.
  3. Duckett, Chris. "Windows Notepad finally understands everyone else's end of line characters" (in English). ZDNet. Archived from the original on 13 May 2018. Retrieved 4 January 2023. [A]fter decades of frustration, and having to download a real text editor to change a single line in a config file from a Linux box, Microsoft has updated Notepad to be able to handle end of line characters used in Unix, Linux, and macOS environments.
  4. Lopez, Michel (8 May 2018). "Introducing extended line endings support in Notepad". Windows Command Line (in English). Archived from the original on 6 April 2019. Retrieved 4 January 2023. As with any change to a long-established tool, there's a chance that this new behavior may not work for your scenarios, or you may prefer to disable this new behavior and return to Notepad's original behavior. To do this, you can change [...registry keys...] to tweak how Notepad handles pasting of text, and which EOL character to use when Enter/Return is hit
  5. "ASCII Chart".
  6. Bray, Andrew C.; Dickens, Adrian C.; Holmes, Mark A. (1983). The Advanced User Guide for the BBC Microcomputer (PDF). pp. 103, 104. ISBN 978-0946827008. Retrieved 30 January 2019.
  7. "RISC OS 3 Programmers' Reference Manual". Retrieved 18 July 2018.
  8. IBM System/360 Reference Data Card, Publication GX20-1703, IBM Data Processing Division, White Plains, NY
  9. "UAX #14: Unicode Line Breaking Algorithm". www.unicode.org.
  10. "C1 Control Character Set of ISO 6429" (PDF). ITSCJ. IPSJ. 1 October 1983. Retrieved 3 March 2022.
  11. Control Functions for Coded Character Sets (PDF) (Report). ECMA International. June 1991.
  12. Character Code Structure and Extension Techniques (PDF) (Report) (6th ed.). ECMA International. December 1994.
  13. "ECMAScript 2019 Language Specification". ECMA International. June 2019. 11.3 Line Terminators.
  14. "ECMAScript 2019 Language Specification". ECMA International. June 2019. 11.2 White Space.
  15. Bray, Tim (March 2014). "The JavaScript Object Notation (JSON) Data Interchange Format". 7. Strings. RFC 7159. {{cite journal}}: Cite journal requires |journal= (help)
  16. "Subsume JSON (a.k.a. JSON ⊂ ECMAScript)". GitHub. 22 May 2018.
  17. "ECMAScript 2019 Language Specification". ECMA International. June 2019. 11.8.4 String Literals.
  18. "ECMAScript 2018 Language Specification". ECMA International. June 2018. 11.8.4 String Literals.
  19. "YAML Ain't Markup Language (YAML) Version 1.2". yaml.org. 5.4. Line Break Characters.
  20. "binmode - perldoc.perl.org". perldoc.perl.org.
  21. "PHP: Strings - Manual". www.php.net.
  22. "Lexical analysis – Python v3.0.1 documentation". docs.python.org.
  23. "What's new in Python 2.3".
  24. "PHP: Predefined Constants - Manual". www.php.net.
  25. "cr.yp.to".
  26. Resnick, Pete (April 2001). "RFC 2822 - Internet Message Format". The Internet Engineering Task Force.
  27. "File Transfer". When in doubt, transfer in binary mode.
  28. "ASCII text conversion between UNIX, Macintosh, MS-DOS". Archived from the original on 2009-02-09.
  29. "C1 Controls and Latin-1 Supplement" (PDF). unicode.org. Retrieved 13 February 2016.


बाहरी संबंध