बाइट क्रम चिन्ह: Difference between revisions

From Vigyanwiki
(Created page with "{{Use dmy dates|date=April 2022}} {{Short description|Unicode character}} {{Redirect|FEFF|the airport in Central African Republic with the airport code FEFF|Bangui M'Poko Inte...")
 
(TEXT)
Line 1: Line 1:
{{Use dmy dates|date=April 2022}}
{{Use dmy dates|date=April 2022}}
{{Short description|Unicode character}}
{{Short description|Unicode character}}
{{Redirect|FEFF|the airport in Central African Republic with the airport code FEFF|Bangui M'Poko International Airport|the program used in X-ray absorption spectroscopy|FEFF (software)|the name of U+FEFF in Unicode and the alternative usage as a zero-width non-breaking space|Word joiner}}
{{Redirect|FEFF|हवाईअड्डा कोड एफईएफएफ के साथ मध्य अफ्रीकी गणराज्य में हवाईअड्डा|बांगुई एम'पोको अंतरराष्ट्रीय हवाई अड्डा|एक्स-रे अवशोषण स्पेक्ट्रोमिकी में प्रयुक्त कार्यक्रम|FEFF (सॉफ़्टवेयर)|एकल कूट में यू+एफईएफएफ का नाम और शून्य-चौड़ाई वाले गैर-विभंजन स्थल के रूप में वैकल्पिक उपयोग|शब्द योजक}}
बाइट ऑर्डर मार्क (बीओएम) विशेष [[यूनिकोड]] वर्ण का एक विशेष उपयोग है, {{unichar|FEFF|byte order mark}}, जिसका मैजिक नंबर (प्रोग्रामिंग) #मैजिक नंबर के रूप में टेक्स्ट स्ट्रीम की शुरुआत में फाइलों में दिखाई देना टेक्स्ट पढ़ने वाले [[कंप्यूटर प्रोग्राम]] को कई चीजों का संकेत दे सकता है:<ref name="unicode FAQ">{{cite web|url=https://www.unicode.org/faq/utf_bom.html#BOM |title=FAQ - UTF-8, UTF-16, UTF-32 & BOM |website=Unicode.org |access-date=28 January 2017}}</ref>
* 16-बिट और 32-बिट एनकोडिंग के मामलों में टेक्स्ट स्ट्रीम का बाइट ऑर्डर, या [[ endianness ]];
* तथ्य यह है कि उच्च स्तर के विश्वास के लिए टेक्स्ट स्ट्रीम का एन्कोडिंग यूनिकोड है;
* कौन सा यूनिकोड वर्ण एन्कोडिंग प्रयोग किया जाता है।


बीओएम का उपयोग वैकल्पिक है। इसकी उपस्थिति सॉफ़्टवेयर द्वारा [[UTF-8]] के उपयोग में हस्तक्षेप करती है जो फ़ाइल के प्रारंभ में गैर-ASCII बाइट्स की अपेक्षा नहीं करता है लेकिन वह अन्यथा टेक्स्ट स्ट्रीम को संभाल सकता है।
बाइट क्रम चिन्ह (बीओएम) विशेष एकल कूट वर्ण का एक विशेष उपयोग है, {{unichar|FEFF|बाइट क्रम चिन्ह}}, जिसका स्थायित्व संख्या (क्रमादेशन) के रूप में मूलपाठ वर्ग के प्रारम्भ में संचिकाओं में दिखाई देना मूलपाठ पढ़ने वाले [[कंप्यूटर प्रोग्राम|कंप्यूटर क्रमादेश]] को कई चीजों का संकेत दे सकता है:<ref name="unicode FAQ">{{cite web|url=https://www.unicode.org/faq/utf_bom.html#BOM |title=FAQ - UTF-8, UTF-16, UTF-32 & BOM |website=Unicode.org |access-date=28 January 2017}}</ref>
* 16-बिट और 32-बिट कूटलेखन की स्तिथि में मूलपाठ वर्ग का बाइट क्रम, या [[ endianness |इंडियननेस्स]];
* तथ्य यह है कि उच्च स्तर के विश्वास के लिए मूलपाठ वर्ग का कूटलेखन एकल कूट है;
* कौन सा एकल कूट वर्ण कूटलेखन प्रयोग किया जाता है।


यूनिकोड को 8-बिट, 16-बिट या 32-बिट पूर्णांकों की इकाइयों में एन्कोड किया जा सकता है। 16- और 32-बिट अभ्यावेदन के लिए, मनमाना स्रोतों से पाठ प्राप्त करने वाले कंप्यूटर को यह जानने की आवश्यकता है कि पूर्णांक किस बाइट क्रम में एन्कोड किए गए हैं। BOM को उसी योजना में एन्कोड किया गया है, जैसा कि बाकी दस्तावेज़ में है और एक यूनिवर्सल कैरेक्टर सेट कैरेक्टर बन जाता है। #अक्षर|{{Proper name|noncharacter}} यूनिकोड कोड बिंदु यदि इसके बाइट्स की अदला-बदली की जाती है। इसलिए, टेक्स्ट एक्सेस करने की प्रक्रिया टेक्स्ट स्ट्रीम के बाहर कुछ अनुबंध या मेटाडेटा की आवश्यकता के बिना, एंडियननेस निर्धारित करने के लिए इन पहले कुछ बाइट्स की जांच कर सकती है। यदि आवश्यक हो, तो आमतौर पर प्राप्त करने वाला कंप्यूटर बाइट्स को अपनी अंतहीनता में स्वैप कर देगा, और प्रसंस्करण के लिए बीओएम की आवश्यकता नहीं होगी।
बीओएम का उपयोग वैकल्पिक है। इसकी उपस्थिति सॉफ़्टवेयर द्वारा [[UTF-8]] के उपयोग में हस्तक्षेप करती है जो संचिका के प्रारंभ में गैर-ASCII बाइट्स की अपेक्षा नहीं करता है लेकिन वह अन्यथा मूलपाठ वर्ग को संभाल सकता है।


बीओएम का बाइट अनुक्रम प्रति यूनिकोड एन्कोडिंग (यूनिकोड मानक के बाहर वाले [[यूटीएफ-7]] -7 जैसे, देखें #Byte_order_marks_by_encoding) के अनुसार भिन्न होता है, और अन्य एन्कोडिंग में संग्रहीत टेक्स्ट स्ट्रीम की शुरुआत में कोई भी अनुक्रम दिखाई देने की संभावना नहीं है। इसलिए, टेक्स्ट स्ट्रीम की शुरुआत में एक एन्कोडेड बीओएम रखना यह संकेत दे सकता है कि टेक्स्ट यूनिकोड है और इस्तेमाल की गई एन्कोडिंग योजना की पहचान करता है। BOM कैरेक्टर के इस प्रयोग को यूनिकोड सिग्नेचर कहा जाता है।<ref>{{cite web|title=The Unicode® Standard Version 9.0|url=https://www.unicode.org/versions/Unicode9.0.0/UnicodeStandard-9.0.pdf|website=The Unicode Consortium|ref=2.13 Special Characters}}</ref>
एकल कूट को 8-बिट, 16-बिट या 32-बिट पूर्णांकों की इकाइयों में कूटलेखन किया जा सकता है। 16- और 32-बिट अभ्यावेदन के लिए, स्वेच्छाचारी स्रोतों से पाठ प्राप्त करने वाले कंप्यूटर को यह जानने की आवश्यकता है कि पूर्णांक किस बाइट क्रम में कूटलेखन किए गए हैं। बीओएम को उसी योजना में कूटलेखन किया गया है, जैसा कि बाकी दस्तावेज़ में है और एक {{Proper name|ग़ैरलिपि}} एकल कूट कूट बिंदु बन जाता है यदि इसके बाइट्स की अदला-बदली की जाती है। इसलिए, मूलपाठ तक पहुँचने की प्रक्रिया मूलपाठ वर्ग के बाहर कुछ अनुबंध या अधिआंकड़ों की आवश्यकता के बिना, एंडियननेस निर्धारित करने के लिए इन पहले कुछ बाइट्स की जांच कर सकती है। यदि आवश्यक हो, तो सामान्यतः प्राप्त करने वाला कंप्यूटर बाइट्स को अपनी अंतहीनता में विनिमय कर देगा, और प्रसंस्करण के लिए बीओएम की आवश्यकता नहीं होगी।
 
बीओएम का बाइट अनुक्रम प्रति एकल कूट कूटलेखन (एकल कूट मानक के बाहर वाले [[यूटीएफ-7]], नीचे दी गई तालिका देखें) के अनुसार भिन्न होता है, और अन्य कूटलेखन में संग्रहीत मूलपाठ वर्ग के प्रारम्भ में कोई भी अनुक्रम दिखाई देने की संभावना नहीं है। इसलिए, मूलपाठ वर्ग के प्रारम्भ में एक कूटलेखनेड बीओएम रखना यह संकेत दे सकता है कि मूलपाठ एकल कूट है और इस्तेमाल की गई कूटलेखन योजना की पहचान करता है। बीओएम लिपि के इस प्रयोग को एकल कूट चिह्नक कहा जाता है।<ref>{{cite web|title=The Unicode® Standard Version 9.0|url=https://www.unicode.org/versions/Unicode9.0.0/UnicodeStandard-9.0.pdf|website=The Unicode Consortium|ref=2.13 Special Characters}}</ref>




== उपयोग ==
== उपयोग ==
बीओएम चरित्र, बस, यूनिकोड कोडपॉइंट है <code>U+FEFF&nbsp;ZERO WIDTH NO-BREAK SPACE</code>, वर्तमान एन्कोडिंग में एन्कोड किया गया। परंपरागत रूप से, यह कोडपॉइंट केवल शून्य-चौड़ाई वाला गैर-ब्रेकिंग स्पेस है जो शब्द-ग्लिफ के बीच लाइन-ब्रेकिंग को रोकता है। इस प्रकार, यदि बीओएम चरित्र डेटा स्ट्रीम के बीच में प्रकट होता है, तो यूनिकोड का कहना है कि इसे सामान्य कोडपॉइंट के रूप में व्याख्या किया जाना चाहिए, बीओएम के रूप में नहीं। यूनिकोड 3.2 के बाद से, इस प्रयोग को इसके पक्ष में बहिष्कृत कर दिया गया है <code>U+2060&nbsp;[[word joiner|WORD JOINER]]</code>.<ref name="unicode FAQ" />
बीओएम चरित्र, बस, एकल कूट कूट बिन्दु है <code>U+FEFF&nbsp;शून्य चौड़ाई सतत दिक्</code>, वर्तमान कूटलेखन में कूटलेखन किया गया। परंपरागत रूप से, यह कूट बिन्दु केवल शून्य-चौड़ाई वाला गैर-विभंजन दिक् है जो शब्द-ग्लिफ के बीच रेखा-विभंजन को रोकता है। इस प्रकार, यदि बीओएम चरित्र आँकड़े वर्ग के बीच में प्रकट होता है, तो एकल कूट का कहना है कि इसे सामान्य कूट बिन्दु के रूप में व्याख्या किया जाना चाहिए, बीओएम के रूप में नहीं। एकल कूट 3.2 के बाद से, इस प्रयोग को <code>U+2060&nbsp;[[word joiner|WORD JOINER]]</code> के पक्ष में बहिष्कृत कर दिया गया है। <ref name="unicode FAQ" />






===यूटीएफ-8===
===यूटीएफ-8===
BOM का UTF-8 प्रतिनिधित्व ([[हेक्साडेसिमल]]) बाइट अनुक्रम है <code>EF&nbsp;BB&nbsp;BF</code>.
बीओएम का UTF-8 प्रतिनिधित्व ([[हेक्साडेसिमल|षोडशाधारी]]) बाइट अनुक्रम <code>EF&nbsp;BB&nbsp;BF</code> है।


यूनिकोड मानक UTF-8 में BOM की अनुमति देता है,<ref>{{cite web|url=https://www.unicode.org/versions/Unicode5.0.0/ch02.pdf |title=The Unicode Standard 5.0, Chapter 2:General Structure |access-date=29 March 2009 |page=36 | quote=Table 2-4. The Seven Unicode Encoding Schemes}}</ref> लेकिन इसके उपयोग की आवश्यकता या अनुशंसा नहीं करता है।<ref>{{cite web|url=https://www.unicode.org/versions/Unicode5.0.0/ch02.pdf |title=The Unicode Standard 5.0, Chapter 2:General Structure |access-date=30 November 2008 |page=36 |quote=Use of a BOM is neither required nor recommended for UTF-8, but may be encountered in contexts where UTF-8 data is converted from other encoding forms that use a BOM or where the BOM is used as a UTF-8 signature}}</ref> UTF-8 में बाइट ऑर्डर का कोई अर्थ नहीं है,<ref name="utf-8-bom">{{cite web|title = FAQ - UTF-8, UTF-16, UTF-32 & BOM: Can a UTF-8 data stream contain the BOM character (in UTF-8 form)? If yes, then can I still assume the remaining UTF-8 bytes are in big-endian order?|url = http://unicode.org/faq/utf_bom.html#bom5|website=Unicode.org|access-date = 4 January 2009}}</ref> इसलिए UTF-8 में इसका एकमात्र उपयोग प्रारंभ में यह संकेत देना है कि टेक्स्ट स्ट्रीम UTF-8 में एन्कोड किया गया है, या यह कि इसे वैकल्पिक BOM वाली स्ट्रीम से UTF-8 में परिवर्तित किया गया था। मानक किसी BOM के मौजूद होने पर उसे हटाने की अनुशंसा भी नहीं करता है, ताकि एनकोडिंग के बीच राउंड-ट्रिपिंग से जानकारी नष्ट न हो, और ताकि उस पर निर्भर रहने वाला कोड काम करना जारी रखे।<ref>{{cite web|title=Re: pre-HTML5 and the BOM from Asmus Freytag on 2012-07-13 (Unicode Mail List Archive)|url=https://www.unicode.org/mail-arch/unicode-ml/y2012-m07/0268.html|website=Unicode.org|access-date = 14 July 2012}}</ref><ref>{{cite web|url=https://bugs.java.com/bugdatabase/view_bug.do?bug_id=6378911 |title=Bug ID: JDK-6378911 UTF-8 decoder handling of byte-order mark has changed |website=Bugs.java.com |access-date=14 October 2021}}</ref> आईईटीएफ अनुशंसा करता है कि यदि प्रोटोकॉल या तो () हमेशा यूटीएफ -8 का उपयोग करता है, या (बी) के पास यह इंगित करने का कोई अन्य तरीका है कि किस एन्कोडिंग का उपयोग किया जा रहा है, तो उसे हस्ताक्षर के रूप में यू + एफईएफएफ के उपयोग को मना करना चाहिए।<ref name=rfc3629>{{cite IETF|title = UTF-8, a transformation format of ISO 10646|rfc = 3629|last1 = Yergeau|first1 = Francois|date=November 2003|publisher = [[Internet Engineering Task Force|IETF]]|access-date = 15 May 2014}}</ref> इस सिफारिश का पालन नहीं करने का एक उदाहरण IETF [[Syslog]] प्रोटोकॉल है जिसके लिए UTF-8 में टेक्स्ट की आवश्यकता होती है और BOM की भी आवश्यकता होती है।<ref>{{cite IETF |title=सिसलॉग प्रोटोकॉल|rfc=5424 |sectionname=MSG |section=6.4 |last= Gerhards |first= Rainer |date=March 2009 |publisher=[[Internet Engineering Task Force|IETF]] }}</ref>
एकल कूट मानक UTF-8 में बीओएम की अनुमति देता है,<ref>{{cite web|url=https://www.unicode.org/versions/Unicode5.0.0/ch02.pdf |title=The Unicode Standard 5.0, Chapter 2:General Structure |access-date=29 March 2009 |page=36 | quote=Table 2-4. The Seven Unicode Encoding Schemes}}</ref> लेकिन इसके उपयोग की आवश्यकता या अनुशंसा नहीं करता है। <ref>{{cite web|url=https://www.unicode.org/versions/Unicode5.0.0/ch02.pdf |title=The Unicode Standard 5.0, Chapter 2:General Structure |access-date=30 November 2008 |page=36 |quote=Use of a BOM is neither required nor recommended for UTF-8, but may be encountered in contexts where UTF-8 data is converted from other encoding forms that use a BOM or where the BOM is used as a UTF-8 signature}}</ref> UTF-8 में बाइट क्रम का कोई अर्थ नहीं है,<ref name="utf-8-bom">{{cite web|title = FAQ - UTF-8, UTF-16, UTF-32 & BOM: Can a UTF-8 data stream contain the BOM character (in UTF-8 form)? If yes, then can I still assume the remaining UTF-8 bytes are in big-endian order?|url = http://unicode.org/faq/utf_bom.html#bom5|website=Unicode.org|access-date = 4 January 2009}}</ref> इसलिए UTF-8 में इसका एकमात्र उपयोग प्रारंभ में यह संकेत देना है कि मूलपाठ वर्ग UTF-8 में कूटलेखन किया गया है, या यह कि इसे वैकल्पिक बीओएम वाली वर्ग से UTF-8 में परिवर्तित किया गया था। मानक किसी बीओएम के उपस्थित होने पर उसे हटाने की अनुशंसा भी नहीं करता है, ताकि कूटलेखन के बीच क्रम-आशुखंडन से जानकारी नष्ट न हो, और ताकि उस पर निर्भर रहने वाला कूट काम करना जारी रखे। <ref>{{cite web|title=Re: pre-HTML5 and the BOM from Asmus Freytag on 2012-07-13 (Unicode Mail List Archive)|url=https://www.unicode.org/mail-arch/unicode-ml/y2012-m07/0268.html|website=Unicode.org|access-date = 14 July 2012}}</ref><ref>{{cite web|url=https://bugs.java.com/bugdatabase/view_bug.do?bug_id=6378911 |title=Bug ID: JDK-6378911 UTF-8 decoder handling of byte-order mark has changed |website=Bugs.java.com |access-date=14 October 2021}}</ref> आईईटीएफ अनुशंसा करता है कि यदि विज्ञप्ति या तो (a) हमेशा यूटीएफ -8 का उपयोग करता है, या (b) के पास यह इंगित करने का कोई अन्य तरीका है कि किस कूटलेखन का उपयोग किया जा रहा है, तो उसे हस्ताक्षर के रूप में U + एफईएफएफ के उपयोग को मना करना चाहिए। <ref name="rfc3629">{{cite IETF|title = UTF-8, a transformation format of ISO 10646|rfc = 3629|last1 = Yergeau|first1 = Francois|date=November 2003|publisher = [[Internet Engineering Task Force|IETF]]|access-date = 15 May 2014}}</ref> इस सिफारिश का पालन नहीं करने का एक उदाहरण IETF [[Syslog|सिसलॉग]] विज्ञप्ति है जिसके लिए UTF-8 में मूलपाठ की आवश्यकता होती है और बीओएम की भी आवश्यकता होती है।<ref>{{cite IETF |title=सिसलॉग प्रोटोकॉल|rfc=5424 |sectionname=MSG |section=6.4 |last= Gerhards |first= Rainer |date=March 2009 |publisher=[[Internet Engineering Task Force|IETF]] }}</ref> बीओएम का उपयोग नहीं करने से पाठ कुछ ऐसे सॉफ़्टवेयर के साथ पीछे-संगत हो सकता है जो एकल कूट-जागरूक नहीं है। उदाहरणों में क्रमादेशन भाषाएं सम्मिलित हैं जो गैर-ASCII बाइट्स को श्रृंखला अक्षर में अनुमति देती हैं लेकिन संचिका के प्रारम्भ में नहीं।
बीओएम का उपयोग नहीं करने से पाठ कुछ ऐसे सॉफ़्टवेयर के साथ पीछे-संगत हो सकता है जो यूनिकोड-जागरूक नहीं है। उदाहरणों में प्रोग्रामिंग भाषाएं शामिल हैं जो गैर-ASCII बाइट्स को स्ट्रिंग अक्षर में अनुमति देती हैं लेकिन फ़ाइल की शुरुआत में नहीं।


UTF-8 एक विरल एन्कोडिंग है: संभावित बाइट संयोजनों का एक बड़ा अंश वैध UTF-8 पाठ में परिणत नहीं होता है। किसी अन्य एन्कोडिंग में बाइनरी डेटा और टेक्स्ट में बाइट अनुक्रम शामिल होने की संभावना है जो UTF-8 के रूप में अमान्य हैं। व्यावहारिक रूप से एकमात्र अपवाद केवल [[एएससीआईआई]]-रेंज बाइट्स वाला पाठ है, लेकिन जैसा कि सभी आधुनिक एनकोडिंग एएससीआईआई वर्णों का प्रतिनिधित्व करने के लिए एएससीआईआई-रेंज बाइट्स का उपयोग करते हैं, इस तरह के टेक्स्ट को यूटीएफ -8 के रूप में सुरक्षित रूप से व्याख्या किया जा सकता है, भले ही इसे किस एन्कोडिंग के रूप में लिखा गया हो। इन विचारों के कारण, UTF-8 त्रुटियों की कमी उच्च विश्वास के साथ इंगित करती है कि BOM की आवश्यकता के बिना, UTF-8 उपयोग में है।
UTF-8 एक विरल कूटलेखन है: संभावित बाइट संयोजनों का एक बड़ा अंश वैध UTF-8 पाठ में परिणत नहीं होता है। किसी अन्य कूटलेखन में युग्मक आँकड़े और मूलपाठ में बाइट अनुक्रम सम्मिलित होने की संभावना है जो UTF-8 के रूप में अमान्य हैं। व्यावहारिक रूप से एकमात्र अपवाद केवल [[एएससीआईआई]]-श्रृंखला बाइट्स वाला पाठ है, लेकिन जैसा कि सभी आधुनिक कूटलेखन एएससीआईआई वर्णों का प्रतिनिधित्व करने के लिए एएससीआईआई-श्रृंखला बाइट्स का उपयोग करते हैं, इस तरह के मूलपाठ को यूटीएफ -8 के रूप में सुरक्षित रूप से व्याख्या किया जा सकता है, भले ही इसे किस कूटलेखन के रूप में लिखा गया हो। इन विचारों के कारण, UTF-8 त्रुटियों की कमी उच्च विश्वास के साथ इंगित करती है कि बीओएम की आवश्यकता के बिना, UTF-8 उपयोग में है।


[[माइक्रोसॉफ्ट]] कंपाइलर्स<ref>{{cite web|url=http://alfps.wordpress.com/2011/11/22/unicode-part-1-windows-console-io-approaches/|title=Unicode part 1: Windows console i/o approaches|author=Alf P. Steinbach|access-date=24 March 2012|year=2011|quote=However, since the C++ source code was encoded as UTF-8 without BOM (as is usual in Linux), the Visual C++ compiler erroneously assumed that the source code was encoded as Windows ANSI.}}</ref> और दुभाषिए, और [[ माइक्रोसॉफ़्ट विंडोज़ ]] पर सॉफ्टवेयर के कई टुकड़े जैसे [[ नोटपैड (विंडोज़) ]] (विंडोज 10 बिल्ड 1903 से पहले)<ref>{{Cite web |title=Windows 10 Notepad is Getting Better UTF-8 Encoding Support |url=https://www.bleepingcomputer.com/news/microsoft/windows-10-notepad-is-getting-better-utf-8-encoding-support/ |access-date=2023-03-07 |website=BleepingComputer |language=en-us}}</ref>) बीओएम को एक आवश्यक मैजिक नंबर (प्रोग्रामिंग) #मैजिक नंबर के रूप में फाइलों में उपयोग करने के बजाय ह्यूरिस्टिक्स का उपयोग करें। टेक्स्ट को UTF-8 के रूप में सहेजते समय ये उपकरण एक BOM जोड़ते हैं, और UTF-8 की व्याख्या तब तक नहीं कर सकते जब तक कि BOM मौजूद न हो या फ़ाइल में केवल ASCII न हो। [[Windows PowerShell]] (5.1 तक) UTF-8 XML दस्तावेज़ों को सहेजते समय एक BOM जोड़ देगा। हालाँकि, PowerShell Core 6 ने एक जोड़ा है <code>-Encoding</code> utf8NoBOM नामक कुछ cmdlets पर स्विच करें ताकि दस्तावेज़ को BOM के बिना सहेजा जा सके। डाउनलोड के लिए किसी दस्तावेज़ को [[सादे पाठ]] फ़ाइल में कनवर्ट करते समय Google डॉक्स भी एक बीओएम जोड़ता है।
[[माइक्रोसॉफ्ट]] संकलनकर्ता <ref>{{cite web|url=http://alfps.wordpress.com/2011/11/22/unicode-part-1-windows-console-io-approaches/|title=Unicode part 1: Windows console i/o approaches|author=Alf P. Steinbach|access-date=24 March 2012|year=2011|quote=However, since the C++ source code was encoded as UTF-8 without BOM (as is usual in Linux), the Visual C++ compiler erroneously assumed that the source code was encoded as Windows ANSI.}}</ref> और अनुवादक, और [[ माइक्रोसॉफ़्ट विंडोज़ |माइक्रोसॉफ़्ट विंडोज़]] पर सॉफ्टवेयर के कई टुकड़े जैसे [[ नोटपैड (विंडोज़) |लेखनदस्ता (विंडोज़)]] (विंडोज 10 निर्माण 1903 से पहले)<ref>{{Cite web |title=Windows 10 Notepad is Getting Better UTF-8 Encoding Support |url=https://www.bleepingcomputer.com/news/microsoft/windows-10-notepad-is-getting-better-utf-8-encoding-support/ |access-date=2023-03-07 |website=BleepingComputer |language=en-us}}</ref>) बीओएम को एक आवश्यक स्थायित्व संख्या (क्रमादेशन) के रूप में संचिकाओं में उपयोग करने के स्थान पर स्वतः शोध प्रणाली का उपयोग करें। मूलपाठ को UTF-8 के रूप में सहेजते समय ये उपकरण एक बीओएम जोड़ते हैं, और UTF-8 की व्याख्या तब तक नहीं कर सकते जब तक कि बीओएम उपस्थित न हो या संचिका में केवल ASCII न हो। [[Windows PowerShell|विंडोज पॉवरशेल]] (5.1 तक) UTF-8 XML दस्तावेज़ों को सहेजते समय एक बीओएम जोड़ देगा। हालाँकि, पॉवरशेल अंतर्भाग 6 ने एक जोड़ा है <code>-कूटलेखन</code> utf8No बीओएम नामक कुछ कंडलेटस पर परिवर्तित करें ताकि दस्तावेज़ को बीओएम के बिना सहेजा जा सके। डाउनलोड के लिए किसी दस्तावेज़ को [[सादे पाठ]] संचिका में रूपांतरण करते समय गूगल डॉक्स भी एक बीओएम जोड़ता है।


===[[यूटीएफ-16]]===
===[[यूटीएफ-16]]===
UTF-16 में, एक BOM (<code>U+FEFF</code>) फाइल या स्ट्रीम के सभी 16-बिट कैरेक्टर एन्कोडिंग # टर्मिनोलॉजी के एंडियननेस (बाइट ऑर्डर) को इंगित करने के लिए फ़ाइल या कैरेक्टर स्ट्रीम के पहले कैरेक्टर के रूप में रखा जा सकता है। यदि इस स्ट्रीम को गलत एंडियननेस के साथ पढ़ने का प्रयास किया जाता है, तो बाइट्स की अदला-बदली की जाएगी, इस प्रकार चरित्र को डिलीवर किया जाएगा <code>U+FFFE</code>, जो [[स्पेशल (यूनिकोड ब्लॉक)]] द्वारा यूनिकोड के रूप में एक{{Proper name|noncharacter}} जो पाठ में कभी प्रकट नहीं होना चाहिए।
UTF-16 में, एक बीओएम (<code>U+FEFF</code>) संचिका या वर्ग के सभी 16-बिट लिपि कूटलेखन के एंडियननेस (बाइट क्रम) को इंगित करने के लिए संचिका या लिपि वर्ग के पहले लिपि के रूप में रखा जा सकता है। यदि इस वर्ग को गलत एंडियननेस के साथ पढ़ने का प्रयास किया जाता है, तो बाइट्स की अदला-बदली की जाएगी, इस प्रकार चरित्र को वितरण किया जाएगा <code>U+FFFE</code>, जो [[स्पेशल (यूनिकोड ब्लॉक)|विशेष (एकल कूट खण्ड)]] द्वारा एकल कूट के रूप में एक {{Proper name|ग़ैर लिपि}} जो पाठ में कभी प्रकट नहीं होना चाहिए।
 
* यदि 16-बिट इकाइयों को [[बड़े एंडियन]] बाइट क्रम (यूटीएफ-16बीई) में दर्शाया जाता है, तो बीओएम (षोडशाधारी) बाइट अनुक्रम <code>FE&nbsp;FF</code>है
* यदि 16-बिट इकाइयां छोटे-एंडियन क्रम (यूटीएफ-16LE) का उपयोग करती हैं, तो बीओएम (षोडशाधारी) बाइट अनुक्रम <code>FF&nbsp;FE</code>है
इंटरनेट प्रदत्त अंक प्राधिकार के लिए पंजीकृत चारसेट UTF-16BE और UTF-16LE के लिए, बाइट क्रम चिन्ह का उपयोग नहीं किया जाना चाहिए क्योंकि इन लिपि सम्मुच्चय के नाम पहले से ही बाइट क्रम निर्धारित करते हैं। यदि ऐसी मूलपाठ वर्ग में कहीं भी सामना किया जाता है, तो U+FEFF को शून्य चौड़ाई सतत दिक् के रूप में समझा जाना चाहिए।


* यदि 16-बिट इकाइयों को [[बड़े एंडियन]] बाइट ऑर्डर (यूटीएफ-16बीई) में दर्शाया जाता है, तो बीओएम (हेक्साडेसिमल) बाइट अनुक्रम है <code>FE&nbsp;FF</code>
यदि कोई बीओएम नहीं है, तो यह अनुमान लगाना संभव है कि पाठ UTF-16 है और इसका बाइट क्रम ASCII वर्णों (अर्थात 0x20-0x7E श्रेणी में बाइट से सटे 0 बाइट, CR और 0x0D के लिए 0x0A और 0x0D) की खोज करके LF)। एक ही क्रम में एक बड़ी संख्या (यादृच्छिक संभावना से कहीं अधिक) UTF-16 का एक बहुत अच्छा संकेत है और क्या 0 सम या विषम बाइट्स में है, बाइट क्रम को इंगित करता है। हालाँकि, इसका परिणाम गलत सकारात्मक और गलत नकारात्मक दोनों हो सकता है।
* यदि 16-बिट इकाइयां छोटे-एंडियन ऑर्डर (यूटीएफ-16LE) का उपयोग करती हैं, तो बीओएम (हेक्साडेसिमल) बाइट अनुक्रम है <code>FF&nbsp;FE</code>
इंटरनेट असाइन किए गए नंबर प्राधिकरण के लिए पंजीकृत चारसेट UTF-16BE और UTF-16LE के लिए, बाइट ऑर्डर मार्क का उपयोग नहीं किया जाना चाहिए क्योंकि इन कैरेक्टर सेट के नाम पहले से ही बाइट ऑर्डर निर्धारित करते हैं। यदि ऐसी टेक्स्ट स्ट्रीम में कहीं भी सामना किया जाता है, तो U+FEFF को शून्य चौड़ाई नो-ब्रेक स्पेस के रूप में समझा जाना चाहिए।


यदि कोई BOM नहीं है, तो यह अनुमान लगाना संभव है कि पाठ UTF-16 है और इसका बाइट क्रम ASCII वर्णों (अर्थात 0x20-0x7E श्रेणी में बाइट से सटे 0 बाइट, CR और 0x0D के लिए 0x0A और 0x0D) की खोज करके एलएफ)। एक ही क्रम में एक बड़ी संख्या (यादृच्छिक संभावना से कहीं अधिक) UTF-16 का एक बहुत अच्छा संकेत है और क्या 0 सम या विषम बाइट्स में है, बाइट क्रम को इंगित करता है। हालाँकि, इसका परिणाम गलत सकारात्मक और गलत नकारात्मक दोनों हो सकता है।
एकल कूट मानक स्तिथियों के अनुरूपता (धारा 3.10) के खंड D98, UTF-16 कूटलेखन योजना बीओएम के साथ प्रारम्भ हो सकती है या नहीं भी हो सकती है। हालांकि, जब कोई बीओएम नहीं होता है, और उच्च स्तरीय विज्ञप्ति की अनुपस्थिति में, यूटीएफ -16 कूटलेखन योजना का बाइट क्रम बड़ा-एंडियन होता है। उच्च-स्तरीय विज्ञप्ति लागू है या नहीं, यह व्याख्या के लिए खुला है। एक कंप्यूटर के लिए स्थानीय संचिकाें जिसके लिए मूल बाइट क्रमण थोड़ा-एन्डियन है, उदाहरण के लिए, UTF-16LE के रूप में कूटलेखित होने का तर्क दिया जा सकता है। इसलिए, बड़े-एंडियन की धारणा को व्यापक रूप से उपेक्षित कर दिया जाता है। HTML5 में प्रयुक्त [[W3C]]/[[वेब ब्राउज़र इंजन की तुलना (HTML समर्थन)|वेब विचरक इंजन की तुलना (HTML समर्थन)]] कूटलेखन मानक निर्दिष्ट करता है कि utf-16 या utf-16le वर्गीकृत की गई सामग्री को परिनियोजित सामग्री से निपटने के लिए अल्प-एंडियन के रूप में समझा जाना चाहिए।<ref>{{cite web | url=https://encoding.spec.whatwg.org/#utf-16le | title=UTF-16LE | publisher=WHATWG | work=Encoding Standard}}</ref> हालाँकि, यदि एक बाइट-क्रम चिन्ह उपस्थित है, तो उस बीओएम को किसी भी अन्य चीज़ की तुलना में अधिक आधिकारिक माना जाना चाहिए।<ref>{{cite web | url=https://encoding.spec.whatwg.org/#decode | title=व्याख्या करना| publisher=WHATWG | work=Encoding Standard}}</ref>


यूनिकोड मानक राज्यों के अनुरूपता (धारा 3.10) के खंड D98, UTF-16 एन्कोडिंग योजना BOM के साथ शुरू हो सकती है या नहीं भी हो सकती है। हालांकि, जब कोई बीओएम नहीं होता है, और उच्च स्तरीय प्रोटोकॉल की अनुपस्थिति में, यूटीएफ -16 एन्कोडिंग योजना का बाइट ऑर्डर बड़ा-एंडियन होता है। उच्च-स्तरीय प्रोटोकॉल लागू है या नहीं, यह व्याख्या के लिए खुला है। एक कंप्यूटर के लिए स्थानीय फ़ाइलें जिसके लिए मूल बाइट ऑर्डरिंग थोड़ा-अंत है, उदाहरण के लिए, UTF-16LE के रूप में एन्कोडेड होने का तर्क दिया जा सकता है। इसलिए, बड़े-एंडियन की धारणा को व्यापक रूप से नजरअंदाज कर दिया जाता है। HTML5 में प्रयुक्त [[W3C]]/[[वेब ब्राउज़र इंजन की तुलना (HTML समर्थन)]] एन्कोडिंग मानक निर्दिष्ट करता है कि utf-16 या utf-16le लेबल की गई सामग्री को परिनियोजित सामग्री से निपटने के लिए लिटिल-एंडियन के रूप में समझा जाना चाहिए।<ref>{{cite web | url=https://encoding.spec.whatwg.org/#utf-16le | title=UTF-16LE | publisher=WHATWG | work=Encoding Standard}}</ref> हालाँकि, यदि एक बाइट-ऑर्डर मार्क मौजूद है, तो उस BOM को किसी भी अन्य चीज़ की तुलना में अधिक आधिकारिक माना जाना चाहिए।<ref>{{cite web | url=https://encoding.spec.whatwg.org/#decode | title=व्याख्या करना| publisher=WHATWG | work=Encoding Standard}}</ref>
क्रमादेश जो UTF-16 को बाइट-आधारित कूटलेखन के रूप में व्याख्या करते हैं, वे वर्णों की विकृत गड़बड़ी प्रदर्शित कर सकते हैं, लेकिन ASCII वर्ण पहचानने योग्य होंगे क्योंकि UTF-16 प्रतिनिधित्व का निम्न बाइट ASCII कूट के समान है और इसलिए समान प्रदर्शित किया जाएगा। 0 के ऊपरी बाइट को रिक्त स्थान, एक अवधि, या कुछ अन्य अपरिवर्तित ग्लिफ के रूप में प्रदर्शित किया जा सकता है।
प्रोग्राम जो UTF-16 को बाइट-आधारित एन्कोडिंग के रूप में व्याख्या करते हैं, वे वर्णों की विकृत गड़बड़ी प्रदर्शित कर सकते हैं, लेकिन ASCII वर्ण पहचानने योग्य होंगे क्योंकि UTF-16 प्रतिनिधित्व का निम्न बाइट ASCII कोड के समान है और इसलिए समान प्रदर्शित किया जाएगा . 0 के ऊपरी बाइट को कुछ भी नहीं, सफेद स्थान, एक अवधि, या कुछ अन्य अपरिवर्तित ग्लिफ के रूप में प्रदर्शित किया जा सकता है।


===[[यूटीएफ-32]]===
===[[यूटीएफ-32]]===
हालांकि UTF-32 के साथ एक BOM का उपयोग किया जा सकता है, लेकिन इस एन्कोडिंग का उपयोग ट्रांसमिशन के लिए शायद ही कभी किया जाता है। अन्यथा UTF-16 के समान नियम लागू होते हैं।
हालांकि UTF-32 के साथ एक बीओएम का उपयोग किया जा सकता है, लेकिन इस कूटलेखन का उपयोग पारेषण के लिए संभवतः ही कभी किया जाता है। अन्यथा UTF-16 के समान नियम लागू होते हैं।


लिटिल-एंडियन यूटीएफ-32 के लिए बीओएम, लिटिल-एंडियन यूटीएफ-16 बीओएम के समान पैटर्न है, जिसके बाद यूटीएफ-16 एनयूएल कैरेक्टर आता है, बीओएम का एक असामान्य उदाहरण दो अलग-अलग एनकोडिंग में समान पैटर्न है। एन्कोडिंग की पहचान करने के लिए BOM का उपयोग करने वाले प्रोग्रामर को यह तय करना होगा कि NUL पहले वर्ण के साथ UTF-32 या UTF-16 की संभावना अधिक है।
अल्प-एंडियन यूटीएफ-32 के लिए बीओएम, अल्प-एंडियन यूटीएफ-16 बीओएम के समान पतिरूप है, जिसके बाद यूटीएफ-16 एनयूएल लिपि आता है, बीओएम का एक असामान्य उदाहरण दो अलग-अलग कूटलेखन में समान पतिरूप है। कूटलेखन की पहचान करने के लिए बीओएम का उपयोग करने वाले क्रमादेशर को यह तय करना होगा कि NUL पहले वर्ण के साथ UTF-32 या UTF-16 की संभावना अधिक है।


== एन्कोडिंग द्वारा बाइट क्रम चिह्न ==
== कूटलेखन द्वारा बाइट क्रम चिह्न ==
यह तालिका बताती है कि विभिन्न एनकोडिंग में बीओएम वर्ण को बाइट अनुक्रम के रूप में कैसे दर्शाया जाता है और कैसे वे अनुक्रम एक पाठ संपादक में दिखाई दे सकते हैं जो मोजिबेक ([[CP1252]] और [[C0 और C1 नियंत्रण कोड]] के लिए [[कैरेट नोटेशन]]) है:
यह तालिका बताती है कि विभिन्न कूटलेखन में बीओएम वर्ण को बाइट अनुक्रम के रूप में कैसे दर्शाया जाता है और कैसे वे अनुक्रम एक पाठ संपादक में दिखाई दे सकते हैं जो मोजिबेक ([[CP1252]] और [[C0 और C1 नियंत्रण कोड|C0 और C1 नियंत्रण कूट]] के लिए [[कैरेट नोटेशन|हसपंद चिन्हांकन]]) है:


{| class="wikitable"
{| class="wikitable"
|-
|-
! Encoding
! Encoding
! Representation ([[hexadecimal]])
! अभ्यावेदन ([[hexadecimal|षोडशाधारी]])
! Representation ([[decimal]])
! अभ्यावेदन (दशमलव)
! Bytes as CP1252 characters
! बाइट्स CP1252 वर्णों के रूप में
|-
|-
| [[UTF-8]]{{refn|This is not literally a "byte order" mark, since a code unit in these encodings is one byte and therefore cannot have bytes in a "wrong" order. Nevertheless, the BOM can be used to indicate the encoding of the text that follows it.<ref name="utf-8-bom"/><ref>{{cite journal|url=http://tools.ietf.org/html/rfc3629#section-6 |title=RFC 3629 - UTF-8, a transformation format of ISO 10646 |website=Tools.ietf.org |date=8 November 2003 |access-date=28 January 2017|last1=Yergeau |first1=François }}</ref>|group=lower-alpha|name=b}}
| [[UTF-8]]{{refn|This is not literally a "byte order" mark, since a code unit in these encodings is one byte and therefore cannot have bytes in a "wrong" order. Nevertheless, the BOM can be used to indicate the encoding of the text that follows it.<ref name="utf-8-bom"/><ref>{{cite journal|url=http://tools.ietf.org/html/rfc3629#section-6 |title=RFC 3629 - UTF-8, a transformation format of ISO 10646 |website=Tools.ietf.org |date=8 November 2003 |access-date=28 January 2017|last1=Yergeau |first1=François }}</ref>|group=lower-alpha|name=b}}
Line 74: Line 75:
| {{tt|00 00 FE FF}}
| {{tt|00 00 FE FF}}
| {{tt|0  0  254 255}}
| {{tt|0  0  254 255}}
| {{tt|^@^@þÿ}} ({{tt|^@}} is the [[null character]])
| {{tt|^@^@þÿ}} ({{tt|^@}} शून्य वर्ण है)
|-
|-
| [[UTF-32]] (LE)
| [[UTF-32]] (LE)
| {{tt|FF FE 00 00}}
| {{tt|FF FE 00 00}}
| {{tt|255 254 0 0}}
| {{tt|255 254 0 0}}
| {{tt|ÿþ^@^@}} ({{tt|^@}} is the null character)
| {{tt|ÿþ^@^@}} ({{tt|^@}} शून्य वर्ण है)
|-
|-
| [[UTF-7]]<ref name=b group=lower-alpha/>
| [[UTF-7]]<ref name=b group=lower-alpha/>
Line 99: Line 100:
| {{tt|0E FE FF}}{{refn|SCSU allows other encodings of U+FEFF, the shown form is the signature recommended in UTR #6.<ref>{{cite web|author=Markus Scherer |url=https://www.unicode.org/reports/tr6/#Signature |title=UTS #6: Compression Scheme for Unicode |website=Unicode.org |access-date=28 January 2017}}</ref>|group=lower-alpha}}
| {{tt|0E FE FF}}{{refn|SCSU allows other encodings of U+FEFF, the shown form is the signature recommended in UTR #6.<ref>{{cite web|author=Markus Scherer |url=https://www.unicode.org/reports/tr6/#Signature |title=UTS #6: Compression Scheme for Unicode |website=Unicode.org |access-date=28 January 2017}}</ref>|group=lower-alpha}}
| {{tt|14 254 255}}
| {{tt|14 254 255}}
| {{tt|^Nþÿ}} ({{tt|^N}} is the [[Shift Out and Shift In characters|"shift out" character]])
| {{tt|^Nþÿ}} ({{tt|^N}} [[बाह्‍य विस्थापन]] संप्रतीक है)
|-
|-
| [[Binary Ordered Compression for Unicode|BOCU-1]]<ref name=b group=lower-alpha/>
| [[Binary Ordered Compression for Unicode|BOCU-1]]<ref name=b group=lower-alpha/>
Line 111: Line 112:
| {{tt|„1•3}}
| {{tt|„1•3}}
|}
|}
{{Reflist|group=lower-alpha}}
{{Reflist|group=निचला-अल्फा}}


== यह भी देखें ==
== यह भी देखें ==
* बाएं से दाएं निशान
* बाएं से दाएं निशान
* अरबी प्रस्तुति फॉर्म-बी, किस कोड बिंदु पर ब्लॉक करें <code>U+FEFF</code> अंतर्गत आता है
* अरबी प्रस्तुति फॉर्म-बी, किस कूट बिंदु पर ब्लॉक करें <code>U+FEFF</code> अंतर्गत आता है


==संदर्भ==
==संदर्भ==
Line 122: Line 123:


==बाहरी संबंध==
==बाहरी संबंध==
* [https://www.unicode.org/faq/utf_bom.html Unicode FAQ: ''UTF-8, UTF-16, UTF-32 & BOM'']
* [https://www.unicode.org/faq/utf_bom.html यूनिकोड FAQ: UTF-8, UTF-16, UTF-32 और बीओएम]
* [https://web.archive.org/web/20210422192604/http://www.unicode.org/versions/Unicode5.0.0/ch02.pdf#G9354 The Unicode Standard, chapter 2.6 ''Encoding Schemes'']
* [https://web.archive.org/web/20210422192604/http://www.unicode.org/versions/Unicode5.0.0/ch02.pdf#G9354 यूनिकोड मानक, अध्याय 2.6 एनकोडिंग योजनाएँ]
* [https://web.archive.org/web/20210422192604/http://www.unicode.org/versions/Unicode5.0.0/ch02.pdf#G9354 The Unicode Standard, chapter 2.13 ''Special Characters and Noncharacters'', section ''Byte Order Mark (BOM)'']
* [https://web.archive.org/web/20210422192604/http://www.unicode.org/versions/Unicode5.0.0/ch02.pdf#G9354 यूनिकोड मानक, अध्याय 2.13 विशेष वर्ण और गैर वर्ण, अनुभाग बाइट ऑर्डर मार्क (बीओएम)]
* [https://web.archive.org/web/20210506134650/http://www.unicode.org/versions/Unicode5.0.0/ch16.pdf#G25817 The Unicode Standard, chapter 16.8 ''Specials'', section ''Byte Order Mark (BOM): U+FEFF'']
* [https://web.archive.org/web/20210506134650/http://www.unicode.org/versions/Unicode5.0.0/ch16.pdf#G25817 यूनिकोड मानक, अध्याय 16.8 विशेष, अनुभाग बाइट ऑर्डर मार्क (बीओएम): यू+एफईएफएफ]


{{Unicode_navigation}}
{{Unicode_navigation}}

Revision as of 12:23, 4 May 2023

बाइट क्रम चिन्ह (बीओएम) विशेष एकल कूट वर्ण का एक विशेष उपयोग है, U+FEFF बाइट क्रम चिन्ह, जिसका स्थायित्व संख्या (क्रमादेशन) के रूप में मूलपाठ वर्ग के प्रारम्भ में संचिकाओं में दिखाई देना मूलपाठ पढ़ने वाले कंप्यूटर क्रमादेश को कई चीजों का संकेत दे सकता है:[1]

  • 16-बिट और 32-बिट कूटलेखन की स्तिथि में मूलपाठ वर्ग का बाइट क्रम, या इंडियननेस्स;
  • तथ्य यह है कि उच्च स्तर के विश्वास के लिए मूलपाठ वर्ग का कूटलेखन एकल कूट है;
  • कौन सा एकल कूट वर्ण कूटलेखन प्रयोग किया जाता है।

बीओएम का उपयोग वैकल्पिक है। इसकी उपस्थिति सॉफ़्टवेयर द्वारा UTF-8 के उपयोग में हस्तक्षेप करती है जो संचिका के प्रारंभ में गैर-ASCII बाइट्स की अपेक्षा नहीं करता है लेकिन वह अन्यथा मूलपाठ वर्ग को संभाल सकता है।

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

बीओएम का बाइट अनुक्रम प्रति एकल कूट कूटलेखन (एकल कूट मानक के बाहर वाले यूटीएफ-7, नीचे दी गई तालिका देखें) के अनुसार भिन्न होता है, और अन्य कूटलेखन में संग्रहीत मूलपाठ वर्ग के प्रारम्भ में कोई भी अनुक्रम दिखाई देने की संभावना नहीं है। इसलिए, मूलपाठ वर्ग के प्रारम्भ में एक कूटलेखनेड बीओएम रखना यह संकेत दे सकता है कि मूलपाठ एकल कूट है और इस्तेमाल की गई कूटलेखन योजना की पहचान करता है। बीओएम लिपि के इस प्रयोग को एकल कूट चिह्नक कहा जाता है।[2]


उपयोग

बीओएम चरित्र, बस, एकल कूट कूट बिन्दु है U+FEFF शून्य चौड़ाई सतत दिक्, वर्तमान कूटलेखन में कूटलेखन किया गया। परंपरागत रूप से, यह कूट बिन्दु केवल शून्य-चौड़ाई वाला गैर-विभंजन दिक् है जो शब्द-ग्लिफ के बीच रेखा-विभंजन को रोकता है। इस प्रकार, यदि बीओएम चरित्र आँकड़े वर्ग के बीच में प्रकट होता है, तो एकल कूट का कहना है कि इसे सामान्य कूट बिन्दु के रूप में व्याख्या किया जाना चाहिए, बीओएम के रूप में नहीं। एकल कूट 3.2 के बाद से, इस प्रयोग को U+2060 WORD JOINER के पक्ष में बहिष्कृत कर दिया गया है। [1]


यूटीएफ-8

बीओएम का UTF-8 प्रतिनिधित्व (षोडशाधारी) बाइट अनुक्रम EF BB BF है।

एकल कूट मानक UTF-8 में बीओएम की अनुमति देता है,[3] लेकिन इसके उपयोग की आवश्यकता या अनुशंसा नहीं करता है। [4] UTF-8 में बाइट क्रम का कोई अर्थ नहीं है,[5] इसलिए UTF-8 में इसका एकमात्र उपयोग प्रारंभ में यह संकेत देना है कि मूलपाठ वर्ग UTF-8 में कूटलेखन किया गया है, या यह कि इसे वैकल्पिक बीओएम वाली वर्ग से UTF-8 में परिवर्तित किया गया था। मानक किसी बीओएम के उपस्थित होने पर उसे हटाने की अनुशंसा भी नहीं करता है, ताकि कूटलेखन के बीच क्रम-आशुखंडन से जानकारी नष्ट न हो, और ताकि उस पर निर्भर रहने वाला कूट काम करना जारी रखे। [6][7] आईईटीएफ अनुशंसा करता है कि यदि विज्ञप्ति या तो (a) हमेशा यूटीएफ -8 का उपयोग करता है, या (b) के पास यह इंगित करने का कोई अन्य तरीका है कि किस कूटलेखन का उपयोग किया जा रहा है, तो उसे हस्ताक्षर के रूप में U + एफईएफएफ के उपयोग को मना करना चाहिए। [8] इस सिफारिश का पालन नहीं करने का एक उदाहरण IETF सिसलॉग विज्ञप्ति है जिसके लिए UTF-8 में मूलपाठ की आवश्यकता होती है और बीओएम की भी आवश्यकता होती है।[9] बीओएम का उपयोग नहीं करने से पाठ कुछ ऐसे सॉफ़्टवेयर के साथ पीछे-संगत हो सकता है जो एकल कूट-जागरूक नहीं है। उदाहरणों में क्रमादेशन भाषाएं सम्मिलित हैं जो गैर-ASCII बाइट्स को श्रृंखला अक्षर में अनुमति देती हैं लेकिन संचिका के प्रारम्भ में नहीं।

UTF-8 एक विरल कूटलेखन है: संभावित बाइट संयोजनों का एक बड़ा अंश वैध UTF-8 पाठ में परिणत नहीं होता है। किसी अन्य कूटलेखन में युग्मक आँकड़े और मूलपाठ में बाइट अनुक्रम सम्मिलित होने की संभावना है जो UTF-8 के रूप में अमान्य हैं। व्यावहारिक रूप से एकमात्र अपवाद केवल एएससीआईआई-श्रृंखला बाइट्स वाला पाठ है, लेकिन जैसा कि सभी आधुनिक कूटलेखन एएससीआईआई वर्णों का प्रतिनिधित्व करने के लिए एएससीआईआई-श्रृंखला बाइट्स का उपयोग करते हैं, इस तरह के मूलपाठ को यूटीएफ -8 के रूप में सुरक्षित रूप से व्याख्या किया जा सकता है, भले ही इसे किस कूटलेखन के रूप में लिखा गया हो। इन विचारों के कारण, UTF-8 त्रुटियों की कमी उच्च विश्वास के साथ इंगित करती है कि बीओएम की आवश्यकता के बिना, UTF-8 उपयोग में है।

माइक्रोसॉफ्ट संकलनकर्ता [10] और अनुवादक, और माइक्रोसॉफ़्ट विंडोज़ पर सॉफ्टवेयर के कई टुकड़े जैसे लेखनदस्ता (विंडोज़) (विंडोज 10 निर्माण 1903 से पहले)[11]) बीओएम को एक आवश्यक स्थायित्व संख्या (क्रमादेशन) के रूप में संचिकाओं में उपयोग करने के स्थान पर स्वतः शोध प्रणाली का उपयोग करें। मूलपाठ को UTF-8 के रूप में सहेजते समय ये उपकरण एक बीओएम जोड़ते हैं, और UTF-8 की व्याख्या तब तक नहीं कर सकते जब तक कि बीओएम उपस्थित न हो या संचिका में केवल ASCII न हो। विंडोज पॉवरशेल (5.1 तक) UTF-8 XML दस्तावेज़ों को सहेजते समय एक बीओएम जोड़ देगा। हालाँकि, पॉवरशेल अंतर्भाग 6 ने एक जोड़ा है -कूटलेखन utf8No बीओएम नामक कुछ कंडलेटस पर परिवर्तित करें ताकि दस्तावेज़ को बीओएम के बिना सहेजा जा सके। डाउनलोड के लिए किसी दस्तावेज़ को सादे पाठ संचिका में रूपांतरण करते समय गूगल डॉक्स भी एक बीओएम जोड़ता है।

यूटीएफ-16

UTF-16 में, एक बीओएम (U+FEFF) संचिका या वर्ग के सभी 16-बिट लिपि कूटलेखन के एंडियननेस (बाइट क्रम) को इंगित करने के लिए संचिका या लिपि वर्ग के पहले लिपि के रूप में रखा जा सकता है। यदि इस वर्ग को गलत एंडियननेस के साथ पढ़ने का प्रयास किया जाता है, तो बाइट्स की अदला-बदली की जाएगी, इस प्रकार चरित्र को वितरण किया जाएगा U+FFFE, जो विशेष (एकल कूट खण्ड) द्वारा एकल कूट के रूप में एक ग़ैर लिपि जो पाठ में कभी प्रकट नहीं होना चाहिए।

  • यदि 16-बिट इकाइयों को बड़े एंडियन बाइट क्रम (यूटीएफ-16बीई) में दर्शाया जाता है, तो बीओएम (षोडशाधारी) बाइट अनुक्रम FE FFहै
  • यदि 16-बिट इकाइयां छोटे-एंडियन क्रम (यूटीएफ-16LE) का उपयोग करती हैं, तो बीओएम (षोडशाधारी) बाइट अनुक्रम FF FEहै

इंटरनेट प्रदत्त अंक प्राधिकार के लिए पंजीकृत चारसेट UTF-16BE और UTF-16LE के लिए, बाइट क्रम चिन्ह का उपयोग नहीं किया जाना चाहिए क्योंकि इन लिपि सम्मुच्चय के नाम पहले से ही बाइट क्रम निर्धारित करते हैं। यदि ऐसी मूलपाठ वर्ग में कहीं भी सामना किया जाता है, तो U+FEFF को शून्य चौड़ाई सतत दिक् के रूप में समझा जाना चाहिए।

यदि कोई बीओएम नहीं है, तो यह अनुमान लगाना संभव है कि पाठ UTF-16 है और इसका बाइट क्रम ASCII वर्णों (अर्थात 0x20-0x7E श्रेणी में बाइट से सटे 0 बाइट, CR और 0x0D के लिए 0x0A और 0x0D) की खोज करके LF)। एक ही क्रम में एक बड़ी संख्या (यादृच्छिक संभावना से कहीं अधिक) UTF-16 का एक बहुत अच्छा संकेत है और क्या 0 सम या विषम बाइट्स में है, बाइट क्रम को इंगित करता है। हालाँकि, इसका परिणाम गलत सकारात्मक और गलत नकारात्मक दोनों हो सकता है।

एकल कूट मानक स्तिथियों के अनुरूपता (धारा 3.10) के खंड D98, UTF-16 कूटलेखन योजना बीओएम के साथ प्रारम्भ हो सकती है या नहीं भी हो सकती है। हालांकि, जब कोई बीओएम नहीं होता है, और उच्च स्तरीय विज्ञप्ति की अनुपस्थिति में, यूटीएफ -16 कूटलेखन योजना का बाइट क्रम बड़ा-एंडियन होता है। उच्च-स्तरीय विज्ञप्ति लागू है या नहीं, यह व्याख्या के लिए खुला है। एक कंप्यूटर के लिए स्थानीय संचिकाें जिसके लिए मूल बाइट क्रमण थोड़ा-एन्डियन है, उदाहरण के लिए, UTF-16LE के रूप में कूटलेखित होने का तर्क दिया जा सकता है। इसलिए, बड़े-एंडियन की धारणा को व्यापक रूप से उपेक्षित कर दिया जाता है। HTML5 में प्रयुक्त W3C/वेब विचरक इंजन की तुलना (HTML समर्थन) कूटलेखन मानक निर्दिष्ट करता है कि utf-16 या utf-16le वर्गीकृत की गई सामग्री को परिनियोजित सामग्री से निपटने के लिए अल्प-एंडियन के रूप में समझा जाना चाहिए।[12] हालाँकि, यदि एक बाइट-क्रम चिन्ह उपस्थित है, तो उस बीओएम को किसी भी अन्य चीज़ की तुलना में अधिक आधिकारिक माना जाना चाहिए।[13]

क्रमादेश जो UTF-16 को बाइट-आधारित कूटलेखन के रूप में व्याख्या करते हैं, वे वर्णों की विकृत गड़बड़ी प्रदर्शित कर सकते हैं, लेकिन ASCII वर्ण पहचानने योग्य होंगे क्योंकि UTF-16 प्रतिनिधित्व का निम्न बाइट ASCII कूट के समान है और इसलिए समान प्रदर्शित किया जाएगा। 0 के ऊपरी बाइट को रिक्त स्थान, एक अवधि, या कुछ अन्य अपरिवर्तित ग्लिफ के रूप में प्रदर्शित किया जा सकता है।

यूटीएफ-32

हालांकि UTF-32 के साथ एक बीओएम का उपयोग किया जा सकता है, लेकिन इस कूटलेखन का उपयोग पारेषण के लिए संभवतः ही कभी किया जाता है। अन्यथा UTF-16 के समान नियम लागू होते हैं।

अल्प-एंडियन यूटीएफ-32 के लिए बीओएम, अल्प-एंडियन यूटीएफ-16 बीओएम के समान पतिरूप है, जिसके बाद यूटीएफ-16 एनयूएल लिपि आता है, बीओएम का एक असामान्य उदाहरण दो अलग-अलग कूटलेखन में समान पतिरूप है। कूटलेखन की पहचान करने के लिए बीओएम का उपयोग करने वाले क्रमादेशर को यह तय करना होगा कि NUL पहले वर्ण के साथ UTF-32 या UTF-16 की संभावना अधिक है।

कूटलेखन द्वारा बाइट क्रम चिह्न

यह तालिका बताती है कि विभिन्न कूटलेखन में बीओएम वर्ण को बाइट अनुक्रम के रूप में कैसे दर्शाया जाता है और कैसे वे अनुक्रम एक पाठ संपादक में दिखाई दे सकते हैं जो मोजिबेक (CP1252 और C0 और C1 नियंत्रण कूट के लिए हसपंद चिन्हांकन) है:

Encoding अभ्यावेदन (षोडशाधारी) अभ्यावेदन (दशमलव) बाइट्स CP1252 वर्णों के रूप में
UTF-8[lower-alpha 1] EF BB BF 239 187 191 
UTF-16 (BE) FE FF 254 255 þÿ
UTF-16 (LE) FF FE 255 254 ÿþ
UTF-32 (BE) 00 00 FE FF 0 0 254 255 ^@^@þÿ (^@ शून्य वर्ण है)
UTF-32 (LE) FF FE 00 00 255 254 0 0 ÿþ^@^@ (^@ शून्य वर्ण है)
UTF-7[lower-alpha 1] 2B 2F 76[lower-alpha 2][15][16] 43 47 118 +/v
UTF-1[lower-alpha 1] F7 64 4C 247 100 76 ÷dL
UTF-EBCDIC[lower-alpha 1] DD 73 66 73 221 115 102 115 Ýsfs
SCSU[lower-alpha 1] 0E FE FF[lower-alpha 3] 14 254 255 ^Nþÿ (^N बाह्‍य विस्थापन संप्रतीक है)
BOCU-1[lower-alpha 1] FB EE 28 251 238 40 ûî(
GB18030[lower-alpha 1] 84 31 95 33 132 49 149 51 „1•3

यह भी देखें

  • बाएं से दाएं निशान
  • अरबी प्रस्तुति फॉर्म-बी, किस कूट बिंदु पर ब्लॉक करें U+FEFF अंतर्गत आता है

संदर्भ

  1. 1.0 1.1 "FAQ - UTF-8, UTF-16, UTF-32 & BOM". Unicode.org. Retrieved 28 January 2017.
  2. "The Unicode® Standard Version 9.0" (PDF). The Unicode Consortium.
  3. "The Unicode Standard 5.0, Chapter 2:General Structure" (PDF). p. 36. Retrieved 29 March 2009. Table 2-4. The Seven Unicode Encoding Schemes
  4. "The Unicode Standard 5.0, Chapter 2:General Structure" (PDF). p. 36. Retrieved 30 November 2008. Use of a BOM is neither required nor recommended for UTF-8, but may be encountered in contexts where UTF-8 data is converted from other encoding forms that use a BOM or where the BOM is used as a UTF-8 signature
  5. 5.0 5.1 "FAQ - UTF-8, UTF-16, UTF-32 & BOM: Can a UTF-8 data stream contain the BOM character (in UTF-8 form)? If yes, then can I still assume the remaining UTF-8 bytes are in big-endian order?". Unicode.org. Retrieved 4 January 2009.
  6. "Re: pre-HTML5 and the BOM from Asmus Freytag on 2012-07-13 (Unicode Mail List Archive)". Unicode.org. Retrieved 14 July 2012.
  7. "Bug ID: JDK-6378911 UTF-8 decoder handling of byte-order mark has changed". Bugs.java.com. Retrieved 14 October 2021.
  8. Yergeau, Francois (November 2003). UTF-8, a transformation format of ISO 10646. IETF. doi:10.17487/RFC3629. RFC 3629. Retrieved 15 May 2014.
  9. Gerhards, Rainer (March 2009). "MSG". सिसलॉग प्रोटोकॉल. IETF. sec. 6.4. doi:10.17487/RFC5424. RFC 5424.
  10. Alf P. Steinbach (2011). "Unicode part 1: Windows console i/o approaches". Retrieved 24 March 2012. However, since the C++ source code was encoded as UTF-8 without BOM (as is usual in Linux), the Visual C++ compiler erroneously assumed that the source code was encoded as Windows ANSI.
  11. "Windows 10 Notepad is Getting Better UTF-8 Encoding Support". BleepingComputer (in English). Retrieved 7 March 2023.
  12. "UTF-16LE". Encoding Standard. WHATWG.
  13. "व्याख्या करना". Encoding Standard. WHATWG.
  14. Yergeau, François (8 November 2003). "RFC 3629 - UTF-8, a transformation format of ISO 10646". Tools.ietf.org. Retrieved 28 January 2017.
  15. https://unicode.org/L2/L2021/21038-bom-guidance.pdf[bare URL PDF]
  16. "SDL Documentation".
  17. Markus Scherer. "UTS #6: Compression Scheme for Unicode". Unicode.org. Retrieved 28 January 2017.


बाहरी संबंध


Cite error: <ref> tags exist for a group named "lower-alpha", but no corresponding <references group="lower-alpha"/> tag was found