यूनिकोड और एचटीएमएल: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 2: Line 2:
{{SpecialChars}}
{{SpecialChars}}
{{Html series}}
{{Html series}}
हाइपरटेक्स्ट मार्कअप भाषा ([[एचटीएमएल ईमेल]]) का उपयोग करके लिखे गए वेब पेजों में यूनिकोड यूनिवर्सल कैरेक्टर सेट के साथ बहुभाषी टेक्स्ट हो सकता है। यूनिकोड और एचटीएमएल के बीच संबंध की कुंजी दस्तावेज़ वर्ण सेट के बीच संबंध है, जो वर्णों के सेट को परिभाषित करता है जो एचटीएमएल दस्तावेज़ में मौजूद हो सकता है और उन्हें संख्याएँ निर्दिष्ट करता है, और बाहरी वर्ण एन्कोडिंग, या चारसेट, एक को एन्कोड करने के लिए उपयोग किया जाता है। बाइट्स के अनुक्रम के रूप में दिया गया दस्तावेज़।
हाइपरटेक्स्ट मार्कअप भाषा ([[एचटीएमएल ईमेल]]) का उपयोग करके लिखे गए वेब पेजों में यूनिकोड यूनिवर्सल कैरेक्टर सेट के साथ बहुभाषी टेक्स्ट हो सकता है। यूनिकोड और एचटीएमएल के बीच संबंध की कुंजी "दस्तावेज़ कैरेक्टर सेट" के बीच का संबंध है, जो कैरेक्टर के सेट को परिभाषित करता है, जो एचटीएमएल दस्तावेज़ में उपस्थित हो सकता है और उन्हें संख्याएँ निर्दिष्ट करता है, और "बाहरी कैरेक्टर एन्कोडिंग", या "चारसेट", किसी दिए गए दस्तावेज़ को बाइट्स के अनुक्रम के रूप में एन्कोड करने के लिए उपयोग किया जाता है।


RFC 1866 में, प्रारंभिक एचटीएमएल 2.0 मानक, दस्तावेज़ वर्ण सेट को ISO-8859-1 के रूप में परिभाषित किया गया था (बाद में एचटीएमएल मानक [[Windows-1252]] एन्कोडिंग के लिए डिफ़ॉल्ट)इसे [[आईएसओ 10646]] (जो मूल रूप से यूनिकोड के बराबर है) तक बढ़ाया गया था {{IETF RFC|2070}}. यह विभिन्न भाषाओं के दस्तावेज़ों या विभिन्न प्लेटफार्मों पर बनाए गए दस्तावेज़ों के बीच भिन्न नहीं होता है। बाहरी [[अक्षरों को सांकेतिक अक्षरों में बदलना]] दस्तावेज़ के लेखक (या दस्तावेज़ बनाने के लिए लेखक द्वारा उपयोग किए जाने वाले सॉफ़्टवेयर) द्वारा चुना जाता है और यह निर्धारित करता है कि दस्तावेज़ वर्ण सेट से वर्णों को दस्तावेज़ मानचित्र को संग्रहीत करने और/या संचारित करने के लिए बाइट्स का उपयोग कैसे किया जाता है। चयनित बाहरी वर्ण एन्कोडिंग में मौजूद वर्ण वर्ण इकाई संदर्भों द्वारा प्रदर्शित नहीं किए जा सकते हैं।
[rfc:1866 आरएफसी 1866] में, प्रारंभिक एचटीएमएल 2.0 मानक, दस्तावेज़ कैरेक्टर सेट को ISO-8859-1 (बाद में एचटीएमएल मानक [[Windows-1252|विंडोज-1252]] एन्कोडिंग के लिए डिफ़ॉल्ट) के रूप में परिभाषित किया गया था। इसे {{IETF RFC|2070}} द्वारा [[आईएसओ 10646]] (जो मूल रूप से यूनिकोड के बराबर है) तक बढ़ाया गया था। यह विभिन्न भाषाओं के दस्तावेजों के बीच भिन्न नहीं होता है या विभिन्न प्लेटफार्मों पर बनाया जाता है। बाहरी [[अक्षरों को सांकेतिक अक्षरों में बदलना|कैरेक्टर एन्कोडिंग]] दस्तावेज़ के लेखक (या दस्तावेज़ बनाने के लिए लेखक द्वारा उपयोग किए जाने वाले सॉफ़्टवेयर) द्वारा चुना जाता है और यह निर्धारित करता है कि दस्तावेज़ कैरेक्टर सेट से कैरेक्टर  को दस्तावेज़ मानचित्र को संग्रहीत करने और संचारित करने के लिए बाइट्स का उपयोग कैसे किया जाता है। चयनित बाहरी कैरेक्टर एन्कोडिंग में उपस्थित कैरेक्टर, कैरेक्टर इकाई संदर्भों द्वारा प्रदर्शित नहीं किए जा सकते हैं।


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


== एचटीएमएल दस्तावेज़ वर्ण ==
== एचटीएमएल दस्तावेज़ कैरेक्टर ==
वेब पेज आमतौर पर एचटीएमएल या [[XHTML|Xएचटीएमएल]] दस्तावेज़ होते हैं। दोनों प्रकार के दस्तावेजों में मौलिक स्तर पर, [[चरित्र (कंप्यूटिंग)]] होते हैं, जो कि [[ग्रफीम]] और ग्रेफेम जैसी इकाइयाँ हैं, जो इस बात से स्वतंत्र हैं कि वे [[ कंप्यूटर भंडारण ]] सिस्टम और [[ संगणक संजाल ]] में कैसे प्रकट होते हैं।
वेब पेज सामान्यतः एचटीएमएल या [[XHTML|एक्सएचटीएमएल]] दस्तावेज़ होते हैं। दोनों प्रकार के दस्तावेजों में मौलिक स्तर पर, [[चरित्र (कंप्यूटिंग)|कैरेक्टर (कंप्यूटिंग)]] होते हैं, जो कि [[ग्रफीम|ग्रेफेम]] और ग्रेफेम जैसी इकाइयाँ हैं, जो इस बात से स्वतंत्र हैं कि वे [[ कंप्यूटर भंडारण | कंप्यूटर स्टोरेज]] प्रणाली और [[ संगणक संजाल | कंप्यूटर नेटवर्क]] में कैसे प्रकट होते हैं।


एचटीएमएल दस्तावेज़ यूनिकोड वर्णों का क्रम है। अधिक विशेष रूप से, एचटीएमएल 4.0 दस्तावेज़ों को एचटीएमएल दस्तावेज़ वर्ण सेट में वर्णों को शामिल करने की आवश्यकता होती है: वर्ण प्रदर्शनों की सूची जिसमें प्रत्येक वर्ण को अद्वितीय, गैर-नकारात्मक पूर्णांक कोड बिंदु निर्दिष्ट किया जाता है। यह सेट एचटीएमएल 4.0 [[दस्तावेज़ प्रकार परिभाषा]] में परिभाषित किया गया है, जो सिंटैक्स (वर्णों के स्वीकार्य क्रम) को भी स्थापित करता है जो वैध एचटीएमएल दस्तावेज़ का उत्पादन कर सकता है। एचटीएमएल 4.0 के लिए निर्धारित एचटीएमएल दस्तावेज़ वर्ण में अधिकांश, लेकिन सभी नहीं, यूनिकोड और ISO/IEC 10646 द्वारा संयुक्त रूप से परिभाषित वर्ण शामिल हैं: [[यूनिवर्सल कैरेक्टर सेट]] (UCS)
एचटीएमएल दस्तावेज़ यूनिकोड कैरेक्टर  का क्रम है। अधिक विशेष रूप से, एचटीएमएल 4.0 दस्तावेज़ों को एचटीएमएल दस्तावेज़ कैरेक्टर सेट में कैरेक्टर  को सम्मिलित करने की आवश्यकता होती है: कैरेक्टर प्रदर्शनों की सूची जिसमें प्रत्येक कैरेक्टर को अद्वितीय, गैर-नकारात्मक पूर्णांक कोड बिंदु निर्दिष्ट किया जाता है। यह सेट एचटीएमएल 4.0 [[दस्तावेज़ प्रकार परिभाषा|DTD]] में परिभाषित किया गया है, जो सिंटैक्स (कैरेक्टर  के स्वीकार्य क्रम) को भी स्थापित करता है, जो वैध एचटीएमएल दस्तावेज़ का उत्पादन कर सकता है। एचटीएमएल 4.0 के लिए निर्धारित एचटीएमएल दस्तावेज़ कैरेक्टर में अधिकांश, लेकिन सभी नहीं, यूनिकोड और ISO/IEC 10646 [[यूनिवर्सल कैरेक्टर सेट]] (यूसीएस) द्वारा संयुक्त रूप से परिभाषित कैरेक्टर सम्मिलित हैं।


एचटीएमएल दस्तावेज़ों की तरह, Xएचटीएमएल दस्तावेज़ यूनिकोड वर्णों का क्रम है। हालांकि, एक्स[[एचटीएमएल]] दस्तावेज़, [[एक्सएमएल]] दस्तावेज़ है, जो अमूर्तता की एक स्पष्ट दस्तावेज़ चरित्र परत नहीं होने के बावजूद, अनुमेय वर्णों की एक समान परिभाषा पर निर्भर करता है जो यूनिकोड / यूसीएस वर्ण परिभाषाओं के अधिकांश, लेकिन सभी को कवर नहीं करता है। एचटीएमएल और Xएचटीएमएल/XML द्वारा उपयोग किए जाने वाले सेट थोड़े अलग हैं, लेकिन इन अंतरों का औसत दस्तावेज़ लेखक पर बहुत कम प्रभाव पड़ता है।
एचटीएमएल दस्तावेज़ों की तरह, एक्सएचटीएमएल दस्तावेज़ यूनिकोड कैरेक्टर  का क्रम है। हालांकि, एक्स[[एचटीएमएल]] दस्तावेज़, [[एक्सएमएल]] दस्तावेज़ है, जो अमूर्तता की एक स्पष्ट दस्तावेज़ कैरेक्टर परत नहीं होने के बावजूद, अनुमेय कैरेक्टर  की एक समान परिभाषा पर निर्भर करता है जो यूनिकोड / यूसीएस कैरेक्टर परिभाषाओं के अधिकांश, लेकिन सभी को कवर नहीं करता है। एचटीएमएल और एक्सएचटीएमएल/एक्सएमएल द्वारा उपयोग किए जाने वाले सेट थोड़े अलग हैं, लेकिन इन अंतरों का औसत दस्तावेज़ लेखक पर बहुत कम प्रभाव पड़ता है।


भले ही दस्तावेज़ एचटीएमएल या Xएचटीएमएल हो, जब [[फाइल सिस्टम]] पर संग्रहीत किया जाता है या किसी नेटवर्क पर प्रसारित किया जाता है, तो दस्तावेज़ के वर्णों को विशेष वर्ण एन्कोडिंग के अनुसार [[ अंश ]] [[ऑक्टेट (कंप्यूटिंग)]] एस ([[बाइट]]्स) के अनुक्रम के रूप में एन्कोड किया जाता है। यह एन्कोडिंग या तो [[यूनिकोड परिवर्तन प्रारूप]] हो सकता है, जैसे [[UTF-8]], जो किसी भी यूनिकोड वर्ण को सीधे एन्कोड कर सकता है, या लीगेसी एन्कोडिंग, जैसे Windows-1252, जो नहीं कर सकता। हालांकि, एन्कोडिंग का उपयोग करते समय भी जो सभी यूनिकोड वर्णों का समर्थन नहीं करते हैं, एन्कोडेड दस्तावेज़ संख्यात्मक वर्ण संदर्भों का उपयोग कर सकता है। उदाहरण के लिए, <code>&amp;#x263A;</code> (☺) का उपयोग यूनिकोड वर्ण सेट में मुस्कुराते हुए चेहरे के चरित्र को इंगित करने के लिए किया जाता है।
तथापि दस्तावेज़ एचटीएमएल या एक्सएचटीएमएल हो, जब [[फाइल सिस्टम|फाइल प्रणाली]] पर संग्रहीत किया जाता है या किसी नेटवर्क पर प्रसारित किया जाता है, तो दस्तावेज़ के कैरेक्टर  को विशेष कैरेक्टर एन्कोडिंग के अनुसार [[ अंश ]] [[ऑक्टेट (कंप्यूटिंग)]] एस ([[बाइट]]्स) के अनुक्रम के रूप में एन्कोड किया जाता है। यह एन्कोडिंग या तो [[यूनिकोड परिवर्तन प्रारूप]] हो सकता है, जैसे [[UTF-8|यूटीएफ-8]], जो किसी भी यूनिकोड कैरेक्टर को सीधे एन्कोड कर सकता है, या लीगेसी एन्कोडिंग, जैसे विंडोज-1252, जो नहीं कर सकता। हालांकि, एन्कोडिंग का उपयोग करते समय भी जो सभी यूनिकोड कैरेक्टर  का समर्थन नहीं करते हैं, एन्कोडेड दस्तावेज़ संख्यात्मक कैरेक्टर संदर्भों का उपयोग कर सकता है। उदाहरण के लिए, <code>&amp;#x263A;</code> (☺) का उपयोग यूनिकोड कैरेक्टर सेट में मुस्कुराते हुए चेहरे के कैरेक्टर को इंगित करने के लिए किया जाता है।


=== वर्ण एन्कोडिंग ===
=== कैरेक्टर एन्कोडिंग ===
संख्यात्मक वर्ण संदर्भों का सहारा लिए बिना सभी यूनिकोड वर्णों का समर्थन करने के लिए, वेब पेज में सभी यूनिकोड को शामिल करने वाला एन्कोडिंग होना चाहिए। सबसे लोकप्रिय UTF-8 है, जहां [[ASCII]] वर्ण, जैसे अंग्रेजी अक्षर, अंक, और कुछ अन्य सामान्य वर्ण ASCII के विरुद्ध अपरिवर्तित संरक्षित किए जाते हैं। यह एचटीएमएल कोड (जैसे <br> और ) को ASCII की तुलना में अपरिवर्तित बनाता है। ASCII श्रेणी के बाहर के वर्ण 2–4 बाइट्स में संग्रहित किए जाते हैं। [[UTF-16]] का उपयोग करना भी संभव है जहां अधिकांश वर्णों को अलग-अलग [[endianness]] के साथ दो बाइट के रूप में संग्रहीत किया जाता है, जो आधुनिक ब्राउज़रों द्वारा समर्थित है लेकिन आमतौर पर कम उपयोग किया जाता है।
संख्यात्मक कैरेक्टर संदर्भों का सहारा लिए बिना सभी यूनिकोड कैरेक्टर  का समर्थन करने के लिए, वेब पेज में सभी यूनिकोड को सम्मिलित करने वाला एन्कोडिंग होना चाहिए। सबसे लोकप्रिय यूटीएफ-8 है, जहां [[ASCII|एएससीआईआई]] कैरेक्टर, जैसे अंग्रेजी अक्षर, अंक, और कुछ अन्य सामान्य कैरेक्टर एएससीआईआई के विरुद्ध अपरिवर्तित संरक्षित किए जाते हैं। यह एचटीएमएल कोड (जैसे <br> और ) को एएससीआईआई की तुलना में अपरिवर्तित बनाता है। एएससीआईआई श्रेणी के बाहर के कैरेक्टर 2–4 बाइट्स में संग्रहित किए जाते हैं। [[UTF-16|यूटीएफ-16]] का उपयोग करना भी संभव है जहां अधिकांश कैरेक्टर  को अलग-अलग [[endianness|एंडीनेस]] के साथ दो बाइट के रूप में संग्रहीत किया जाता है, जो आधुनिक ब्राउज़रों द्वारा समर्थित है लेकिन सामान्यतः कम उपयोग किया जाता है।


=== संख्यात्मक चरित्र संदर्भ ===
=== संख्यात्मक कैरेक्टर संदर्भ ===
{{Main|Numeric character reference}}
{{Main|सांख्यिक वर्ण संदर्भ}}


लीगेसी एन्कोडिंग की सीमाओं के आसपास काम करने के लिए, एचटीएमएल को इस तरह डिज़ाइन किया गया है कि संख्यात्मक वर्ण संदर्भ का उपयोग करके एचटीएमएल दस्तावेज़ के अंदर संपूर्ण यूनिकोड के वर्णों का प्रतिनिधित्व करना संभव है: वर्णों का क्रम जो यूनिकोड कोड बिंदु को स्पष्ट रूप से बताता है जिस पात्र का प्रतिनिधित्व किया जा रहा है। चरित्र संदर्भ रूप लेता है<code>&amp;#</code><var>एन</var><code>;</code>, जहां <var>N</var> या तो यूनिकोड कोड बिंदु के लिए [[दशमलव]] संख्या है, या [[हेक्साडेसिमल]] संख्या है, जिस स्थिति में इसे इसके द्वारा उपसर्ग किया जाना चाहिए <code>x</code>. संख्यात्मक वर्ण संदर्भ बनाने वाले वर्ण इंटरनेट पर उपयोग के लिए स्वीकृत प्रत्येक एन्कोडिंग में सार्वभौमिक रूप से प्रतिनिधित्व योग्य हैं।
लीगेसी एन्कोडिंग की सीमाओं के आसपास काम करने के लिए, एचटीएमएल को इस तरह डिज़ाइन किया गया है कि संख्यात्मक कैरेक्टर संदर्भ का उपयोग करके एचटीएमएल दस्तावेज़ के अंदर संपूर्ण यूनिकोड के कैरेक्टर  का प्रतिनिधित्व करना संभव है: कैरेक्टर  का क्रम जो यूनिकोड कोड बिंदु को स्पष्ट रूप से बताता है जिस पात्र का प्रतिनिधित्व किया जा रहा है। कैरेक्टर संदर्भ रूप लेता है<code>&amp;#</code><var>एन</var><code>;</code>, जहां <var>N</var> या तो यूनिकोड कोड बिंदु के लिए [[दशमलव]] संख्या है, या [[हेक्साडेसिमल]] संख्या है, जिस स्थिति में इसे इसके द्वारा उपसर्ग किया जाना चाहिए <code>x</code>. संख्यात्मक कैरेक्टर संदर्भ बनाने वाले कैरेक्टर इंटरनेट पर उपयोग के लिए स्वीकृत प्रत्येक एन्कोडिंग में सार्वभौमिक रूप से प्रतिनिधित्व योग्य हैं।


इस संदर्भ में हेक्साडेसिमल के लिए समर्थन हाल ही का है, इसलिए पुराने ब्राउज़रों को हेक्साडेसिमल संख्याओं के साथ संदर्भित वर्णों को प्रदर्शित करने में समस्या हो सकती है{{snd}} लेकिन उन्हें वैसे भी कोड पॉइंट 255 से ऊपर यूनिकोड वर्णों को प्रदर्शित करने में समस्या होगी। पुराने ब्राउज़रों के साथ बेहतर संगतता सुनिश्चित करने के लिए, हेक्साडेसिमल कोड बिंदु को दशमलव मान में परिवर्तित करना अभी भी सामान्य अभ्यास है (उदाहरण के लिए <code>&amp;#21512;</code> के बजाय <code>&amp;#x5408;</code>).
इस संदर्भ में हेक्साडेसिमल के लिए समर्थन हाल ही का है, इसलिए पुराने ब्राउज़रों को हेक्साडेसिमल संख्याओं के साथ संदर्भित कैरेक्टर  को प्रदर्शित करने में समस्या हो सकती है{{snd}} लेकिन उन्हें वैसे भी कोड पॉइंट 255 से ऊपर यूनिकोड कैरेक्टर  को प्रदर्शित करने में समस्या होगी। पुराने ब्राउज़रों के साथ उत्तम संगतता सुनिश्चित करने के लिए, हेक्साडेसिमल कोड बिंदु को दशमलव मान में परिवर्तित करना अभी भी सामान्य अभ्यास है (उदाहरण के लिए <code>&amp;#21512;</code> के अतिरिक्त <code>&amp;#x5408;</code>).


=== नामित वर्ण संस्थाएं ===
=== नामित कैरेक्टर संस्थाएं ===
{{Main|character entity reference}}
{{Main|वर्ण इकाई संदर्भ}}


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


इकाई संदर्भों के उपयोग के माध्यम से चरित्र संस्थाओं को एचटीएमएल दस्तावेज़ में शामिल किया जा सकता है, जो '<code>&amp;</code><var>EntityName</var><code>;</code>, जहां <var>EntityName</var> इकाई का नाम है। उदाहरण के लिए, <code>&amp;mdash;</code>, बहुत कुछ एक सा <code>&amp;#8212;</code> या <code>&amp;#x2014;</code>, प्रतिनिधित्व करता है {{U+|2014}}: em डैश वर्ण भले ही प्रयुक्त वर्ण एन्कोडिंग में वह वर्ण न हो।
इकाई संदर्भों के उपयोग के माध्यम से कैरेक्टर संस्थाओं को एचटीएमएल दस्तावेज़ में सम्मिलित किया जा सकता है, जो '<code>&amp;</code><var>EntityName</var><code>;</code>, जहां <var>EntityName</var> इकाई का नाम है। उदाहरण के लिए, <code>&amp;mdash;</code>, बहुत कुछ एक सा <code>&amp;#8212;</code> या <code>&amp;#x2014;</code>, प्रतिनिधित्व करता है {{U+|2014}}: em डैश कैरेक्टर तथापि प्रयुक्त कैरेक्टर एन्कोडिंग में वह कैरेक्टर न हो।


पूरी सूची के लिए, देखें: XML और एचटीएमएल वर्ण इकाई संदर्भों की सूची।
पूरी सूची के लिए, देखें: एक्सएमएल और एचटीएमएल कैरेक्टर इकाई संदर्भों की सूची।


== वर्ण एन्कोडिंग निर्धारण ==
== कैरेक्टर एन्कोडिंग निर्धारण ==
एचटीएमएल को सही ढंग से संसाधित करने के लिए, वेब ब्राउज़र को यह पता लगाना चाहिए कि कौन से यूनिकोड वर्ण एचटीएमएल दस्तावेज़ के एन्कोडेड रूप से दर्शाए गए हैं। ऐसा करने के लिए, वेब ब्राउज़र को पता होना चाहिए कि किस एन्कोडिंग का उपयोग किया गया था।
एचटीएमएल को सही ढंग से संसाधित करने के लिए, वेब ब्राउज़र को यह पता लगाना चाहिए कि कौन से यूनिकोड कैरेक्टर एचटीएमएल दस्तावेज़ के एन्कोडेड रूप से दर्शाए गए हैं। ऐसा करने के लिए, वेब ब्राउज़र को पता होना चाहिए कि किस एन्कोडिंग का उपयोग किया गया था।


=== एन्कोडिंग जानकारी ===
=== एन्कोडिंग जानकारी ===
जब कोई दस्तावेज़ [[MIME]] संदेश या परिवहन के माध्यम से प्रेषित होता है जो MIME सामग्री प्रकार जैसे [[HTTP]] प्रतिक्रिया का उपयोग करता है, तो संदेश सामग्री-प्रकार शीर्षलेख के माध्यम से एन्कोडिंग को संकेत दे सकता है, जैसे <code>Content-Type: text/एचटीएमएल; charset=UTF-8</code>. एन्कोडिंग घोषित करने के अन्य बाहरी साधनों की अनुमति है लेकिन शायद ही कभी इस्तेमाल किया जाता है। यदि दस्तावेज़ यूनिकोड एन्कोडिंग की तुलना का उपयोग करता है, तो एन्कोडिंग जानकारी [[बाइट ऑर्डर मार्क]] (बीओएम) के रूप में भी मौजूद हो सकती है। अंत में, एन्कोडिंग को एचटीएमएल सिंटैक्स के माध्यम से घोषित किया जा सकता है। के लिए <code>text/एचटीएमएल</code> क्रमांकन तब तक, जब तक पृष्ठ ASCII के विस्तार में एन्कोड किया गया हो (जैसे UTF-8, और इस प्रकार, यदि पृष्ठ UTF-16 का उपयोग नहीं कर रहा है), a <code>meta</code> तत्व, जैसे <code>&lt;meta http-equiv="content-type" content="text/एचटीएमएल; charset=UTF-8"&gt;</code> या ([[HTML5|एचटीएमएल5]] से शुरू) <code>&lt;meta charset="UTF-8"></code> इस्तेमाल किया जा सकता है। एक्सएमएल के रूप में क्रमबद्ध एचटीएमएल पृष्ठों के लिए, घोषणा विकल्प या तो एन्कोडिंग डिफ़ॉल्ट (जो एक्सएमएल दस्तावेजों के लिए यूटीएफ -8 है) पर भरोसा करना है, या एक्सएमएल एन्कोडिंग घोषणा का उपयोग करना है। XML के रूप में प्रस्तुत एचटीएमएल में मेटा विशेषता कोई भूमिका नहीं निभाती है।
जब कोई दस्तावेज़ [[MIME|एमआईएमई]] संदेश या परिवहन के माध्यम से प्रेषित होता है जो एमआईएमई सामग्री प्रकार जैसे [[HTTP|एचटीटीपी]] प्रतिक्रिया का उपयोग करता है, तो संदेश सामग्री-प्रकार शीर्षलेख के माध्यम से एन्कोडिंग को संकेत दे सकता है, जैसे <code>Content-Type: text/html; charset=UTF-8</code>. एन्कोडिंग घोषित करने के अन्य बाहरी साधनों की अनुमति है लेकिन संभवतया ही कभी उपयोग किया जाता है। यदि दस्तावेज़ यूनिकोड एन्कोडिंग की तुलना का उपयोग करता है, तो एन्कोडिंग जानकारी [[बाइट ऑर्डर मार्क]] (बीओएम) के रूप में भी उपस्थित हो सकती है। अंत में, एन्कोडिंग को एचटीएमएल सिंटैक्स के माध्यम से घोषित किया जा सकता है। के लिए <code>text/html</code> क्रमांकन तब तक, जब तक पेजएएससीआईआई के विस्तार में एन्कोड किया गया हो (जैसे यूटीएफ-8, और इस प्रकार, यदि पेजयूटीएफ-16 का उपयोग नहीं कर रहा है), a <code>meta</code> तत्व, जैसे <code>&lt;meta http-equiv="content-type" content="text/html; charset=UTF-8"&gt;</code> या ([[HTML5|एचटीएमएल5]] से प्रारंभ) <code>&lt;meta charset="UTF-8"></code> उपयोग किया जा सकता है। एक्सएमएल के रूप में क्रमबद्ध एचटीएमएल पेजों के लिए, घोषणा विकल्प या तो एन्कोडिंग डिफ़ॉल्ट (जो एक्सएमएल दस्तावेजों के लिए यूटीएफ -8 है) पर भरोसा करना है, या एक्सएमएल एन्कोडिंग घोषणा का उपयोग करना है। एक्सएमएल के रूप में प्रस्तुत एचटीएमएल में मेटा विशेषता कोई भूमिका नहीं निभाती है।


=== एन्कोडिंग डिफ़ॉल्ट ===
=== एन्कोडिंग डिफ़ॉल्ट ===
एन्कोडिंग डिफ़ॉल्ट तब लागू होता है जब कोई बाहरी या आंतरिक एन्कोडिंग घोषणा नहीं होती है और कोई बाइट ऑर्डर चिह्न भी नहीं होता है। जबकि XML के रूप में प्रस्तुत किए गए एचटीएमएल पृष्ठों के लिए एन्कोडिंग डिफ़ॉल्ट UTF-8 होना आवश्यक है, नियमित वेब पेज के लिए एन्कोडिंग डिफ़ॉल्ट (अर्थात: एचटीएमएल पृष्ठों के लिए क्रमबद्ध रूप से <code>text/एचटीएमएल</code>) ब्राउज़र के स्थानीयकरण के आधार पर भिन्न होता है। मुख्य रूप से पश्चिमी यूरोपीय भाषाओं के लिए स्थापित सिस्टम के लिए, यह आमतौर पर ISO 8859-1#Windows-1252|Windows-1252 होगा। सिरिलिक वर्णमाला स्थानों के लिए, डिफ़ॉल्ट आमतौर पर [[Windows-1251]] है। किसी ऐसे स्थान के ब्राउज़र के लिए जहां लीगेसी मल्टी-बाइट कैरेक्टर एनकोडिंग प्रचलित हैं, ऑटो-डिटेक्शन के कुछ रूप लागू होने की संभावना है।
एन्कोडिंग डिफ़ॉल्ट तब प्रयुक्त होता है जब कोई बाहरी या आंतरिक एन्कोडिंग घोषणा नहीं होती है और कोई बाइट ऑर्डर चिह्न भी नहीं होता है। जबकि एक्सएमएल के रूप में प्रस्तुत किए गए एचटीएमएल पेजों के लिए एन्कोडिंग डिफ़ॉल्ट यूटीएफ-8 होना आवश्यक है, नियमित वेब पेज के लिए एन्कोडिंग डिफ़ॉल्ट (अर्थात: एचटीएमएल पेजों के लिए क्रमबद्ध रूप से <code>text/html</code>) ब्राउज़र के स्थानीयकरण के आधार पर भिन्न होता है। मुख्य रूप से पश्चिमी यूरोपीय भाषाओं के लिए स्थापित प्रणाली के लिए, यह सामान्यतः ISO 8859-1#विंडोज-1252|विंडोज-1252 होगा। सिरिलिक कैरेक्टरमाला स्थानों के लिए, डिफ़ॉल्ट सामान्यतः [[Windows-1251|विंडोज-1251]] है। किसी ऐसे स्थान के ब्राउज़र के लिए जहां लीगेसी मल्टी-बाइट कैरेक्टर एनकोडिंग प्रचलित हैं, ऑटो-डिटेक्शन के कुछ रूप प्रयुक्त होने की संभावना है।


=== एन्कोडिंग रुझान ===
=== एन्कोडिंग रुझान ===
[[प्रोग्रामिंग भाषा]]ओं और [[ऑपरेटिंग सिस्टम]] में 8-बिट पाठ प्रस्तुतियों की विरासत और एन्कोडिंग की बारीकियों को समझने की आवश्यकता के साथ बोझिल उपयोगकर्ताओं से बचने की इच्छा के कारण, एचटीएमएल लेखकों द्वारा उपयोग किए जाने वाले कई टेक्स्ट संपादक एन्कोडिंग के विकल्प की पेशकश करने में असमर्थ या अनिच्छुक हैं। फ़ाइलों को डिस्क में सहेजते समय और अक्सर बहुत सीमित सीमा से परे वर्णों के इनपुट की अनुमति भी नहीं देते हैं। नतीजतन, कई एचटीएमएल लेखक एन्कोडिंग मुद्दों से अनभिज्ञ हैं और उन्हें इस बात का कोई अंदाजा नहीं है कि उनके दस्तावेज़ वास्तव में किस एन्कोडिंग का उपयोग करते हैं। गलतफहमी, जैसे विश्वास है कि एन्कोडिंग घोषणा वास्तविक एन्कोडिंग में परिवर्तन को प्रभावित करती है (जबकि यह वास्तव में केवल लेबल है जो गलत हो सकता है), इस संपादक के रवैये का भी कारण है। उसी दिशा में योगदान देने वाला अन्य कारक, UTF-8 का आगमन है{{snd}} जो अन्य एन्कोडिंग की आवश्यकता को बहुत कम कर देता है, और इस प्रकार आधुनिक संपादक एचटीएमएल5 विनिर्देश द्वारा अनुशंसित डिफ़ॉल्ट रूप से जाते हैं,<ref>{{Cite web|url=http://www.w3.org/TR/html5/semantics.html#charset|title=HTML5|author=Ian Hickson|access-date=17 September 2011|year=2011|quote=Authors are encouraged to use UTF-8. Conformance checkers may advise authors against using legacy encodings. [RFC3629] Authoring tools should default to using UTF-8 for newly created documents. [RFC3629] }}</ref> यूटीएफ -8 के लिए।
[[प्रोग्रामिंग भाषा]]ओं और [[ऑपरेटिंग सिस्टम|ऑपरेटिंग प्रणाली]] में 8-बिट पाठ प्रस्तुतियों की विरासत और एन्कोडिंग की बारीकियों को समझने की आवश्यकता के साथ बोझिल उपयोगकर्ताओं से बचने की इच्छा के कारण, एचटीएमएल लेखकों द्वारा उपयोग किए जाने वाले कई टेक्स्ट संपादक एन्कोडिंग के विकल्प की पेशकश करने में असमर्थ या अनिच्छुक हैं। फ़ाइलों को डिस्क में सहेजते समय और अक्सर बहुत सीमित सीमा से परे कैरेक्टर  के इनपुट की अनुमति भी नहीं देते हैं। परिणामस्वरूप, कई एचटीएमएल लेखक एन्कोडिंग मुद्दों से अनभिज्ञ हैं और उन्हें इस बात का कोई अंदाजा नहीं है कि उनके दस्तावेज़ वास्तव में किस एन्कोडिंग का उपयोग करते हैं। गलतफहमी, जैसे विश्वास है कि एन्कोडिंग घोषणा वास्तविक एन्कोडिंग में परिवर्तन को प्रभावित करती है (जबकि यह वास्तव में केवल लेबल है जो गलत हो सकता है), इस संपादक के रवैये का भी कारण है। उसी दिशा में योगदान देने वाला अन्य कारक, यूटीएफ-8 का आगमन है{{snd}} जो अन्य एन्कोडिंग की आवश्यकता को बहुत कम कर देता है, और इस प्रकार आधुनिक संपादक एचटीएमएल5 विनिर्देश द्वारा अनुशंसित डिफ़ॉल्ट रूप से जाते हैं,<ref>{{Cite web|url=http://www.w3.org/TR/html5/semantics.html#charset|title=HTML5|author=Ian Hickson|access-date=17 September 2011|year=2011|quote=Authors are encouraged to use UTF-8. Conformance checkers may advise authors against using legacy encodings. [RFC3629] Authoring tools should default to using UTF-8 for newly created documents. [RFC3629] }}</ref> यूटीएफ -8 के लिए।


=== बाइट ऑर्डर मार्क/यूनिकोड सूँघना ===
=== बाइट ऑर्डर मार्क/यूनिकोड सूँघना ===
एचटीएमएल (सामग्री-प्रकार टेक्स्ट/एचटीएमएल और सामग्री/प्रकार एप्लिकेशन/एक्सएचटीएमएल+एक्सएमएल) के दोनों सीरियलाइजेशन के लिए, बाइट ऑर्डर मार्क (बीओएम) एचटीएमएल दस्तावेज़ के भीतर एन्कोडिंग जानकारी प्रसारित करने का प्रभावी तरीका है। UTF-8 के लिए, BOM वैकल्पिक है, जबकि UTF-16 और UTF-32 एनकोडिंग के लिए यह अनिवार्य है। (ध्यान दें: BOM के बिना UTF-16 और UTF-32 को औपचारिक रूप से अलग-अलग नामों से जाना जाता है, वे अलग-अलग एनकोडिंग हैं, और इस प्रकार कुछ प्रकार की एन्कोडिंग घोषणा की आवश्यकता होती है - [[UTF-16BE]], [[UTF-16LE]], [[UTF-32LE]] और [[UTF-32BE]] देखें .) BOM वर्ण (U+FEFF) के उपयोग का मतलब है कि एन्कोडिंग स्वचालित रूप से किसी भी प्रोसेसिंग एप्लिकेशन के लिए खुद को घोषित करती है। प्रसंस्करण अनुप्रयोगों को क्रमशः UTF-32, UTF-16 या UTF-8 एन्कोडेड के रूप में दस्तावेज़ की पहचान करने के लिए बाइट स्ट्रीम में प्रारंभिक 0x0000FEFF, 0xFEFF या 0xEFBBBF की तलाश करने की आवश्यकता है। इन एन्कोडिंग के लिए किसी अतिरिक्त मेटाडेटा तंत्र की आवश्यकता नहीं है क्योंकि बाइट-ऑर्डर चिह्न में प्रसंस्करण अनुप्रयोगों के लिए आवश्यक सभी जानकारी शामिल है। ज्यादातर परिस्थितियों में, बाइट-ऑर्डर मार्क कैरेक्टर को अन्य कैरेक्टर्स से अलग एडिटिंग एप्लिकेशन द्वारा हैंडल किया जाता है, इसलिए लेखक द्वारा गलत एन्कोडिंग को इंगित करने के लिए बाइट ऑर्डर मार्क को हटाने या अन्यथा बदलने का बहुत कम जोखिम होता है (जैसा कि एन्कोडिंग घोषित होने पर हो सकता है) अंग्रेजी/लैटिन लिपि में)। यदि दस्तावेज़ में बाइट-ऑर्डर चिह्न का अभाव है, तो तथ्य यह है कि एचटीएमएल दस्तावेज़ में पहला गैर-रिक्त मुद्रण योग्य वर्ण <(U+003C) माना जाता है, जिसका उपयोग UTF-8/UTF-16/UTF- निर्धारित करने के लिए किया जा सकता है। 32 एन्कोडिंग।
एचटीएमएल (सामग्री-प्रकार टेक्स्ट/एचटीएमएल और सामग्री/प्रकार एप्लिकेशन/एक्सएचटीएमएल+एक्सएमएल) के दोनों सीरियलाइजेशन के लिए, बाइट ऑर्डर मार्क (बीओएम) एचटीएमएल दस्तावेज़ के भीतर एन्कोडिंग जानकारी प्रसारित करने का प्रभावी तरीका है। यूटीएफ-8 के लिए, BOM वैकल्पिक है, जबकि यूटीएफ-16 और यूटीएफ-32 एनकोडिंग के लिए यह अनिवार्य है। (ध्यान दें: BOM के बिना यूटीएफ-16 और यूटीएफ-32 को औपचारिक रूप से अलग-अलग नामों से जाना जाता है, वे अलग-अलग एनकोडिंग हैं, और इस प्रकार कुछ प्रकार की एन्कोडिंग घोषणा की आवश्यकता होती है - [[UTF-16BE|यूटीएफ-16BE]], [[UTF-16LE|यूटीएफ-16LE]], [[UTF-32LE|यूटीएफ-32LE]] और [[UTF-32BE|यूटीएफ-32BE]] देखें .) BOM कैरेक्टर (U+FEFF) के उपयोग का मतलब है कि एन्कोडिंग स्वचालित रूप से किसी भी प्रोसेसिंग एप्लिकेशन के लिए खुद को घोषित करती है। प्रसंस्करण अनुप्रयोगों को क्रमशः यूटीएफ-32, यूटीएफ-16 या यूटीएफ-8 एन्कोडेड के रूप में दस्तावेज़ की पहचान करने के लिए बाइट स्ट्रीम में प्रारंभिक 0x0000FEFF, 0xFEFF या 0xEFBBBF की तलाश करने की आवश्यकता है। इन एन्कोडिंग के लिए किसी अतिरिक्त मेटाडेटा तंत्र की आवश्यकता नहीं है क्योंकि बाइट-ऑर्डर चिह्न में प्रसंस्करण अनुप्रयोगों के लिए आवश्यक सभी जानकारी सम्मिलित है। ज्यादातर परिस्थितियों में, बाइट-ऑर्डर मार्क कैरेक्टर को अन्य कैरेक्टर्स से अलग एडिटिंग एप्लिकेशन द्वारा हैंडल किया जाता है, इसलिए लेखक द्वारा गलत एन्कोडिंग को इंगित करने के लिए बाइट ऑर्डर मार्क को हटाने या अन्यथा बदलने का बहुत कम जोखिम होता है (जैसा कि एन्कोडिंग घोषित होने पर हो सकता है) अंग्रेजी/लैटिन लिपि में)। यदि दस्तावेज़ में बाइट-ऑर्डर चिह्न का अभाव है, तो तथ्य यह है कि एचटीएमएल दस्तावेज़ में पहला गैर-रिक्त मुद्रण योग्य कैरेक्टर <(U+003C) माना जाता है, जिसका उपयोग यूटीएफ-8/यूटीएफ-16/यूटीएफ- निर्धारित करने के लिए किया जा सकता है। 32 एन्कोडिंग।


=== एन्कोडिंग ओवरराइडिंग ===
=== एन्कोडिंग ओवरराइडिंग ===
कई एचटीएमएल दस्तावेज़ों को गलत एन्कोडिंग जानकारी, या कोई एन्कोडिंग जानकारी बिल्कुल नहीं दी जाती है। ऐसे मामलों में एन्कोडिंग निर्धारित करने के लिए, कई ब्राउज़र उपयोगकर्ता को किसी सूची से मैन्युअल रूप से एन्कोडिंग नाम चुनने की अनुमति देते हैं। वे एन्कोडिंग ऑटो-डिटेक्शन एल्गोरिदम भी नियोजित कर सकते हैं जो कंसर्ट में या के साथ काम करता है{{snd}} बीओएम के मामले में और एचटीएमएल के मामले में एक्सएमएल के रूप में कार्य करता है{{snd}} मैनुअल ओवरराइड के खिलाफ।
कई एचटीएमएल दस्तावेज़ों को गलत एन्कोडिंग जानकारी, या कोई एन्कोडिंग जानकारी बिल्कुल नहीं दी जाती है। ऐसे मामलों में एन्कोडिंग निर्धारित करने के लिए, कई ब्राउज़र उपयोगकर्ता को किसी सूची से मैन्युअल रूप से एन्कोडिंग नाम चुनने की अनुमति देते हैं। वे एन्कोडिंग ऑटो-डिटेक्शन एल्गोरिदम भी नियोजित कर सकते हैं जो कंसर्ट में या के साथ काम करता है{{snd}} बीओएम के मामले में और एचटीएमएल के मामले में एक्सएमएल के रूप में कार्य करता है{{snd}} मैनुअल ओवरराइड के खिलाफ।


एचटीएमएल दस्तावेज़ों के लिए जो हैं <code>text/एचटीएमएल</code> क्रमबद्ध, मैनुअल ओवरराइड सभी दस्तावेजों पर लागू हो सकता है, या केवल उन पर लागू हो सकता है जिनके लिए घोषणाओं और/या बाइट पैटर्न को देखकर एन्कोडिंग का पता नहीं लगाया जा सकता है। यह तथ्य कि मैनुअल ओवरराइड मौजूद है और व्यापक रूप से उपयोग किया जाता है, वेब पर सटीक एन्कोडिंग घोषणाओं को अपनाने में बाधा डालता है; इसलिए समस्या के बने रहने की संभावना है। लेकिन ध्यान दें कि इंटरनेट एक्सप्लोरर, क्रोम और सफारी{{snd}} एक्सएमएल और दोनों के लिए <code>text/एचटीएमएल</code> क्रमबद्धता{{snd}} पृष्ठ में BOM शामिल होने पर एन्कोडिंग को ओवरराइड करने की अनुमति न दें।<ref>{{Cite web |title=12897 – In some parsers, UTF-8 BOM trumps the HTTP charset attribute (Encoding sniffing algorithm) |url=https://www.w3.org/Bugs/Public/show_bug.cgi?id=12897 |access-date=2023-03-09 |website=www.w3.org}}</ref>
एचटीएमएल दस्तावेज़ों के लिए जो हैं <code>text/एचटीएमएल</code> क्रमबद्ध, मैनुअल ओवरराइड सभी दस्तावेजों पर प्रयुक्त हो सकता है, या केवल उन पर प्रयुक्त हो सकता है जिनके लिए घोषणाओं और/या बाइट पैटर्न को देखकर एन्कोडिंग का पता नहीं लगाया जा सकता है। यह तथ्य कि मैनुअल ओवरराइड उपस्थित है और व्यापक रूप से उपयोग किया जाता है, वेब पर स्पष्ट एन्कोडिंग घोषणाओं को अपनाने में बाधा डालता है; इसलिए समस्या के बने रहने की संभावना है। लेकिन ध्यान दें कि इंटरनेट एक्सप्लोरर, क्रोम और सफारी{{snd}} एक्सएमएल और दोनों के लिए <code>text/html</code> क्रमबद्धता{{snd}} पेजमें BOM सम्मिलित होने पर एन्कोडिंग को ओवरराइड करने की अनुमति न दें।<ref>{{Cite web |title=12897 – In some parsers, UTF-8 BOM trumps the HTTP charset attribute (Encoding sniffing algorithm) |url=https://www.w3.org/Bugs/Public/show_bug.cgi?id=12897 |access-date=2023-03-09 |website=www.w3.org}}</ref>
पसंदीदा XML लेबल के साथ क्रमबद्ध एचटीएमएल दस्तावेज़ों के लिए{{snd}} <code>application/xएचटीएमएल+xml</code>, मैनुअल एन्कोडिंग ओवरराइड की अनुमति नहीं है। ऐसे एक्सएमएल दस्तावेज़ के एन्कोडिंग को ओवरराइड करने का अर्थ होगा कि दस्तावेज़ एक्सएमएल होना बंद हो गया है, क्योंकि यह पता लगाने योग्य त्रुटियों के साथ एन्कोडिंग घोषणा के लिए एक्सएमएल दस्तावेज़ों के लिए घातक त्रुटि है। वर्तमान में, फ़ायरफ़ॉक्स जैसे गेको ब्राउज़र इस नियम का पालन करते हैं, जबकि अन्य सामान्य ब्राउज़र जो एचटीएमएल को XML के रूप में समर्थन करते हैं, जैसे कि वेबकिट ब्राउज़र (क्रोम / सफारी) <ref>{{Cite web |title=66189 – XML parser doesn't emit FATAL ERROR for all, detectable encoding errors |url=https://bugs.webkit.org/show_bug.cgi?id=66189 |access-date=2023-03-09 |website=bugs.webkit.org}}</ref> एक्सएचटीएमएल दस्तावेज़ों के एन्कोडिंग को मैन्युअल रूप से ओवरराइड करने की अनुमति दें।
 
पसंदीदा एक्सएमएल लेबल के साथ क्रमबद्ध एचटीएमएल दस्तावेज़ों के लिए{{snd}} <code>application/xhtml+xml</code>, मैनुअल एन्कोडिंग ओवरराइड की अनुमति नहीं है। ऐसे एक्सएमएल दस्तावेज़ के एन्कोडिंग को ओवरराइड करने का अर्थ होगा कि दस्तावेज़ एक्सएमएल होना बंद हो गया है, क्योंकि यह पता लगाने योग्य त्रुटियों के साथ एन्कोडिंग घोषणा के लिए एक्सएमएल दस्तावेज़ों के लिए घातक त्रुटि है। वर्तमान में, फ़ायरफ़ॉक्स जैसे गेको ब्राउज़र इस नियम का पालन करते हैं, जबकि अन्य सामान्य ब्राउज़र जो एचटीएमएल को एक्सएमएल के रूप में समर्थन करते हैं, जैसे कि वेबकिट ब्राउज़र (क्रोम / सफारी) <ref>{{Cite web |title=66189 – XML parser doesn't emit FATAL ERROR for all, detectable encoding errors |url=https://bugs.webkit.org/show_bug.cgi?id=66189 |access-date=2023-03-09 |website=bugs.webkit.org}}</ref> एक्सएचटीएमएल दस्तावेज़ों के एन्कोडिंग को मैन्युअल रूप से ओवरराइड करने की अनुमति दें।


== वेब ब्राउज़र समर्थन ==
== वेब ब्राउज़र समर्थन ==
Line 155: Line 156:
!scope="row" colspan=4 | To display all of the characters above, you may need to install one or more large multilingual fonts, like [[Code2000]].
!scope="row" colspan=4 | To display all of the characters above, you may need to install one or more large multilingual fonts, like [[Code2000]].
|}
|}
[[मोज़िला फ़ायरफ़ॉक्स]], [[ओपेरा (वेब ​​ब्राउज़र)]], [[सफारी (वेब ​​​​ब्राउज़र)]] और [[इंटरनेट एक्सप्लोरर]] (संस्करण 7 से) जैसे कुछ वेब ब्राउज़र पृष्ठ पर प्रत्येक व्यक्तिगत चरित्र को प्रदर्शित करने के लिए बुद्धिमानी से फ़ॉन्ट चुनकर बहुभाषी वेब पेज प्रदर्शित करने में सक्षम हैं। . वे [[यूनिकोड ब्लॉक]] के किसी भी मिश्रण को सही ढंग से प्रदर्शित करेंगे, जब तक कि ऑपरेटिंग सिस्टम में टाइपफेस # यूनिकोड फोंट की उपयुक्त सूची मौजूद हो।
[[मोज़िला फ़ायरफ़ॉक्स]], [[ओपेरा (वेब ​​ब्राउज़र)]], [[सफारी (वेब ​​​​ब्राउज़र)]] और [[इंटरनेट एक्सप्लोरर]] (संस्करण 7 से) जैसे कुछ वेब ब्राउज़र पेजपर प्रत्येक व्यक्तिगत कैरेक्टर को प्रदर्शित करने के लिए बुद्धिमानी से फ़ॉन्ट चुनकर बहुभाषी वेब पेज प्रदर्शित करने में सक्षम हैं। . वे [[यूनिकोड ब्लॉक]] के किसी भी मिश्रण को सही ढंग से प्रदर्शित करेंगे, जब तक कि ऑपरेटिंग प्रणाली में टाइपफेस # यूनिकोड फोंट की उपयुक्त सूची उपस्थित हो।


पुराने ब्राउज़र, जैसे [[नेटस्केप नेविगेटर]] 4.77 और [[इंटरनेट एक्सप्लोरर 6]], केवल पृष्ठ के वर्ण एन्कोडिंग से जुड़े वर्तमान फ़ॉन्ट द्वारा समर्थित पाठ प्रदर्शित कर सकते हैं, और संख्यात्मक वर्ण संदर्भों को वर्तमान वर्ण एन्कोडिंग के भीतर कोड मानों के संदर्भ के रूप में गलत समझ सकते हैं, बल्कि यूनिकोड कोड बिंदुओं के संदर्भ में। जब आप ऐसे ब्राउज़र का उपयोग कर रहे हैं, तो यह संभावना नहीं है कि आपके कंप्यूटर में वे सभी फ़ॉन्ट हों, या यह कि ब्राउज़र एक ही पृष्ठ पर सभी उपलब्ध फ़ॉन्ट का उपयोग कर सकता है। नतीजतन, ब्राउज़र ऊपर दिए गए उदाहरणों में पाठ को सही ढंग से प्रदर्शित नहीं करेगा, हालांकि यह उनमें से एक सबसेट प्रदर्शित कर सकता है। क्योंकि वे मानक के अनुसार एन्कोड किए गए हैं, हालांकि, वे किसी भी सिस्टम पर सही ढंग से प्रदर्शित होंगे जो आज्ञाकारी है और जिसमें अक्षर उपलब्ध हैं। इसके अलावा, नामित इकाई संदर्भों में उपयोग के लिए दिए गए नाम वाले वर्ण दूसरों की तुलना में अधिक सामान्य रूप से उपलब्ध होने की संभावना है।
पुराने ब्राउज़र, जैसे [[नेटस्केप नेविगेटर]] 4.77 और [[इंटरनेट एक्सप्लोरर 6]], केवल पेजके कैरेक्टर एन्कोडिंग से जुड़े वर्तमान फ़ॉन्ट द्वारा समर्थित पाठ प्रदर्शित कर सकते हैं, और संख्यात्मक कैरेक्टर संदर्भों को वर्तमान कैरेक्टर एन्कोडिंग के भीतर कोड मानों के संदर्भ के रूप में गलत समझ सकते हैं, बल्कि यूनिकोड कोड बिंदुओं के संदर्भ में। जब आप ऐसे ब्राउज़र का उपयोग कर रहे हैं, तो यह संभावना नहीं है कि आपके कंप्यूटर में वे सभी फ़ॉन्ट हों, या यह कि ब्राउज़र एक ही पेजपर सभी उपलब्ध फ़ॉन्ट का उपयोग कर सकता है। परिणामस्वरूप, ब्राउज़र ऊपर दिए गए उदाहरणों में पाठ को सही ढंग से प्रदर्शित नहीं करेगा, हालांकि यह उनमें से एक सबसेट प्रदर्शित कर सकता है। क्योंकि वे मानक के अनुसार एन्कोड किए गए हैं, हालांकि, वे किसी भी प्रणाली पर सही ढंग से प्रदर्शित होंगे जो आज्ञाकारी है और जिसमें अक्षर उपलब्ध हैं। इसके अतिरिक्त, नामित इकाई संदर्भों में उपयोग के लिए दिए गए नाम वाले कैरेक्टर दूसरों की तुलना में अधिक सामान्य रूप से उपलब्ध होने की संभावना है।


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


== उपयोग की आवृत्ति ==
== उपयोग की आवृत्ति ==
[[Google]] के वेब इंडेक्स के आंतरिक डेटा के अनुसार, दिसंबर 2007 में UTF-8 यूनिकोड एन्कोडिंग वेब पेजों पर सबसे अधिक इस्तेमाल किया जाने वाला एन्कोडिंग बन गया, ASCII (US) और ISO/IEC 8859-1|8859-1/Windows-1252 दोनों को पीछे छोड़ दिया ( पश्चिमी यूरोपियन)।<ref>[[Mark Davis (Unicode)|Mark Davis]]: [http://googleblog.blogspot.com/2008/05/moving-to-unicode-51.html Moving to Unicode 5.1] Official Google blog, 5 May 2008</ref>
[[Google]] के वेब इंडेक्स के आंतरिक डेटा के अनुसार, दिसंबर 2007 में यूटीएफ-8 यूनिकोड एन्कोडिंग वेब पेजों पर सबसे अधिक उपयोग किया जाने वाला एन्कोडिंग बन गया, एएससीआईआई (US) और ISO/IEC 8859-1|8859-1/विंडोज-1252 दोनों को पीछे छोड़ दिया ( पश्चिमी यूरोपियन)।<ref>[[Mark Davis (Unicode)|Mark Davis]]: [http://googleblog.blogspot.com/2008/05/moving-to-unicode-51.html Moving to Unicode 5.1] Official Google blog, 5 May 2008</ref>




== यह भी देखें ==
== यह भी देखें ==
* मेटा: सहायता: विशेष वर्ण
* मेटा: सहायता: विशेष कैरेक्टर
* [[HTML में कैरेक्टर एनकोडिंग|एचटीएमएल में कैरेक्टर एनकोडिंग]]
* [[HTML में कैरेक्टर एनकोडिंग|एचटीएमएल में कैरेक्टर एनकोडिंग]]
* वर्णसेट का पता लगाना
* कैरेक्टरसेट का पता लगाना
* wikibooks: यूनिकोड/चरित्र संदर्भ|यूनिकोड चरित्र संदर्भ (wikibooks)
* wikibooks: यूनिकोड/कैरेक्टर संदर्भ|यूनिकोड कैरेक्टर संदर्भ (wikibooks)


==संदर्भ==
==संदर्भ==

Revision as of 22:11, 19 June 2023

हाइपरटेक्स्ट मार्कअप भाषा (एचटीएमएल ईमेल) का उपयोग करके लिखे गए वेब पेजों में यूनिकोड यूनिवर्सल कैरेक्टर सेट के साथ बहुभाषी टेक्स्ट हो सकता है। यूनिकोड और एचटीएमएल के बीच संबंध की कुंजी "दस्तावेज़ कैरेक्टर सेट" के बीच का संबंध है, जो कैरेक्टर के सेट को परिभाषित करता है, जो एचटीएमएल दस्तावेज़ में उपस्थित हो सकता है और उन्हें संख्याएँ निर्दिष्ट करता है, और "बाहरी कैरेक्टर एन्कोडिंग", या "चारसेट", किसी दिए गए दस्तावेज़ को बाइट्स के अनुक्रम के रूप में एन्कोड करने के लिए उपयोग किया जाता है।

[rfc:1866 आरएफसी 1866] में, प्रारंभिक एचटीएमएल 2.0 मानक, दस्तावेज़ कैरेक्टर सेट को ISO-8859-1 (बाद में एचटीएमएल मानक विंडोज-1252 एन्कोडिंग के लिए डिफ़ॉल्ट) के रूप में परिभाषित किया गया था। इसे RFC 2070 द्वारा आईएसओ 10646 (जो मूल रूप से यूनिकोड के बराबर है) तक बढ़ाया गया था। यह विभिन्न भाषाओं के दस्तावेजों के बीच भिन्न नहीं होता है या विभिन्न प्लेटफार्मों पर बनाया जाता है। बाहरी कैरेक्टर एन्कोडिंग दस्तावेज़ के लेखक (या दस्तावेज़ बनाने के लिए लेखक द्वारा उपयोग किए जाने वाले सॉफ़्टवेयर) द्वारा चुना जाता है और यह निर्धारित करता है कि दस्तावेज़ कैरेक्टर सेट से कैरेक्टर को दस्तावेज़ मानचित्र को संग्रहीत करने और संचारित करने के लिए बाइट्स का उपयोग कैसे किया जाता है। चयनित बाहरी कैरेक्टर एन्कोडिंग में उपस्थित कैरेक्टर, कैरेक्टर इकाई संदर्भों द्वारा प्रदर्शित नहीं किए जा सकते हैं।

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

एचटीएमएल दस्तावेज़ कैरेक्टर

वेब पेज सामान्यतः एचटीएमएल या एक्सएचटीएमएल दस्तावेज़ होते हैं। दोनों प्रकार के दस्तावेजों में मौलिक स्तर पर, कैरेक्टर (कंप्यूटिंग) होते हैं, जो कि ग्रेफेम और ग्रेफेम जैसी इकाइयाँ हैं, जो इस बात से स्वतंत्र हैं कि वे कंप्यूटर स्टोरेज प्रणाली और कंप्यूटर नेटवर्क में कैसे प्रकट होते हैं।

एचटीएमएल दस्तावेज़ यूनिकोड कैरेक्टर का क्रम है। अधिक विशेष रूप से, एचटीएमएल 4.0 दस्तावेज़ों को एचटीएमएल दस्तावेज़ कैरेक्टर सेट में कैरेक्टर को सम्मिलित करने की आवश्यकता होती है: कैरेक्टर प्रदर्शनों की सूची जिसमें प्रत्येक कैरेक्टर को अद्वितीय, गैर-नकारात्मक पूर्णांक कोड बिंदु निर्दिष्ट किया जाता है। यह सेट एचटीएमएल 4.0 DTD में परिभाषित किया गया है, जो सिंटैक्स (कैरेक्टर के स्वीकार्य क्रम) को भी स्थापित करता है, जो वैध एचटीएमएल दस्तावेज़ का उत्पादन कर सकता है। एचटीएमएल 4.0 के लिए निर्धारित एचटीएमएल दस्तावेज़ कैरेक्टर में अधिकांश, लेकिन सभी नहीं, यूनिकोड और ISO/IEC 10646 यूनिवर्सल कैरेक्टर सेट (यूसीएस) द्वारा संयुक्त रूप से परिभाषित कैरेक्टर सम्मिलित हैं।

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

तथापि दस्तावेज़ एचटीएमएल या एक्सएचटीएमएल हो, जब फाइल प्रणाली पर संग्रहीत किया जाता है या किसी नेटवर्क पर प्रसारित किया जाता है, तो दस्तावेज़ के कैरेक्टर को विशेष कैरेक्टर एन्कोडिंग के अनुसार अंश ऑक्टेट (कंप्यूटिंग) एस (बाइट्स) के अनुक्रम के रूप में एन्कोड किया जाता है। यह एन्कोडिंग या तो यूनिकोड परिवर्तन प्रारूप हो सकता है, जैसे यूटीएफ-8, जो किसी भी यूनिकोड कैरेक्टर को सीधे एन्कोड कर सकता है, या लीगेसी एन्कोडिंग, जैसे विंडोज-1252, जो नहीं कर सकता। हालांकि, एन्कोडिंग का उपयोग करते समय भी जो सभी यूनिकोड कैरेक्टर का समर्थन नहीं करते हैं, एन्कोडेड दस्तावेज़ संख्यात्मक कैरेक्टर संदर्भों का उपयोग कर सकता है। उदाहरण के लिए, &#x263A; (☺) का उपयोग यूनिकोड कैरेक्टर सेट में मुस्कुराते हुए चेहरे के कैरेक्टर को इंगित करने के लिए किया जाता है।

कैरेक्टर एन्कोडिंग

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

संख्यात्मक कैरेक्टर संदर्भ

लीगेसी एन्कोडिंग की सीमाओं के आसपास काम करने के लिए, एचटीएमएल को इस तरह डिज़ाइन किया गया है कि संख्यात्मक कैरेक्टर संदर्भ का उपयोग करके एचटीएमएल दस्तावेज़ के अंदर संपूर्ण यूनिकोड के कैरेक्टर का प्रतिनिधित्व करना संभव है: कैरेक्टर का क्रम जो यूनिकोड कोड बिंदु को स्पष्ट रूप से बताता है जिस पात्र का प्रतिनिधित्व किया जा रहा है। कैरेक्टर संदर्भ रूप लेता है&#एन;, जहां N या तो यूनिकोड कोड बिंदु के लिए दशमलव संख्या है, या हेक्साडेसिमल संख्या है, जिस स्थिति में इसे इसके द्वारा उपसर्ग किया जाना चाहिए x. संख्यात्मक कैरेक्टर संदर्भ बनाने वाले कैरेक्टर इंटरनेट पर उपयोग के लिए स्वीकृत प्रत्येक एन्कोडिंग में सार्वभौमिक रूप से प्रतिनिधित्व योग्य हैं।

इस संदर्भ में हेक्साडेसिमल के लिए समर्थन हाल ही का है, इसलिए पुराने ब्राउज़रों को हेक्साडेसिमल संख्याओं के साथ संदर्भित कैरेक्टर को प्रदर्शित करने में समस्या हो सकती है – लेकिन उन्हें वैसे भी कोड पॉइंट 255 से ऊपर यूनिकोड कैरेक्टर को प्रदर्शित करने में समस्या होगी। पुराने ब्राउज़रों के साथ उत्तम संगतता सुनिश्चित करने के लिए, हेक्साडेसिमल कोड बिंदु को दशमलव मान में परिवर्तित करना अभी भी सामान्य अभ्यास है (उदाहरण के लिए &#21512; के अतिरिक्त &#x5408;).

नामित कैरेक्टर संस्थाएं

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

इकाई संदर्भों के उपयोग के माध्यम से कैरेक्टर संस्थाओं को एचटीएमएल दस्तावेज़ में सम्मिलित किया जा सकता है, जो '&EntityName;, जहां EntityName इकाई का नाम है। उदाहरण के लिए, &mdash;, बहुत कुछ एक सा &#8212; या &#x2014;, प्रतिनिधित्व करता है U+2014: em डैश कैरेक्टर — तथापि प्रयुक्त कैरेक्टर एन्कोडिंग में वह कैरेक्टर न हो।

पूरी सूची के लिए, देखें: एक्सएमएल और एचटीएमएल कैरेक्टर इकाई संदर्भों की सूची।

कैरेक्टर एन्कोडिंग निर्धारण

एचटीएमएल को सही ढंग से संसाधित करने के लिए, वेब ब्राउज़र को यह पता लगाना चाहिए कि कौन से यूनिकोड कैरेक्टर एचटीएमएल दस्तावेज़ के एन्कोडेड रूप से दर्शाए गए हैं। ऐसा करने के लिए, वेब ब्राउज़र को पता होना चाहिए कि किस एन्कोडिंग का उपयोग किया गया था।

एन्कोडिंग जानकारी

जब कोई दस्तावेज़ एमआईएमई संदेश या परिवहन के माध्यम से प्रेषित होता है जो एमआईएमई सामग्री प्रकार जैसे एचटीटीपी प्रतिक्रिया का उपयोग करता है, तो संदेश सामग्री-प्रकार शीर्षलेख के माध्यम से एन्कोडिंग को संकेत दे सकता है, जैसे Content-Type: text/html; charset=UTF-8. एन्कोडिंग घोषित करने के अन्य बाहरी साधनों की अनुमति है लेकिन संभवतया ही कभी उपयोग किया जाता है। यदि दस्तावेज़ यूनिकोड एन्कोडिंग की तुलना का उपयोग करता है, तो एन्कोडिंग जानकारी बाइट ऑर्डर मार्क (बीओएम) के रूप में भी उपस्थित हो सकती है। अंत में, एन्कोडिंग को एचटीएमएल सिंटैक्स के माध्यम से घोषित किया जा सकता है। के लिए text/html क्रमांकन तब तक, जब तक पेजएएससीआईआई के विस्तार में एन्कोड किया गया हो (जैसे यूटीएफ-8, और इस प्रकार, यदि पेजयूटीएफ-16 का उपयोग नहीं कर रहा है), a meta तत्व, जैसे <meta http-equiv="content-type" content="text/html; charset=UTF-8"> या (एचटीएमएल5 से प्रारंभ) <meta charset="UTF-8"> उपयोग किया जा सकता है। एक्सएमएल के रूप में क्रमबद्ध एचटीएमएल पेजों के लिए, घोषणा विकल्प या तो एन्कोडिंग डिफ़ॉल्ट (जो एक्सएमएल दस्तावेजों के लिए यूटीएफ -8 है) पर भरोसा करना है, या एक्सएमएल एन्कोडिंग घोषणा का उपयोग करना है। एक्सएमएल के रूप में प्रस्तुत एचटीएमएल में मेटा विशेषता कोई भूमिका नहीं निभाती है।

एन्कोडिंग डिफ़ॉल्ट

एन्कोडिंग डिफ़ॉल्ट तब प्रयुक्त होता है जब कोई बाहरी या आंतरिक एन्कोडिंग घोषणा नहीं होती है और कोई बाइट ऑर्डर चिह्न भी नहीं होता है। जबकि एक्सएमएल के रूप में प्रस्तुत किए गए एचटीएमएल पेजों के लिए एन्कोडिंग डिफ़ॉल्ट यूटीएफ-8 होना आवश्यक है, नियमित वेब पेज के लिए एन्कोडिंग डिफ़ॉल्ट (अर्थात: एचटीएमएल पेजों के लिए क्रमबद्ध रूप से text/html) ब्राउज़र के स्थानीयकरण के आधार पर भिन्न होता है। मुख्य रूप से पश्चिमी यूरोपीय भाषाओं के लिए स्थापित प्रणाली के लिए, यह सामान्यतः ISO 8859-1#विंडोज-1252|विंडोज-1252 होगा। सिरिलिक कैरेक्टरमाला स्थानों के लिए, डिफ़ॉल्ट सामान्यतः विंडोज-1251 है। किसी ऐसे स्थान के ब्राउज़र के लिए जहां लीगेसी मल्टी-बाइट कैरेक्टर एनकोडिंग प्रचलित हैं, ऑटो-डिटेक्शन के कुछ रूप प्रयुक्त होने की संभावना है।

एन्कोडिंग रुझान

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

बाइट ऑर्डर मार्क/यूनिकोड सूँघना

एचटीएमएल (सामग्री-प्रकार टेक्स्ट/एचटीएमएल और सामग्री/प्रकार एप्लिकेशन/एक्सएचटीएमएल+एक्सएमएल) के दोनों सीरियलाइजेशन के लिए, बाइट ऑर्डर मार्क (बीओएम) एचटीएमएल दस्तावेज़ के भीतर एन्कोडिंग जानकारी प्रसारित करने का प्रभावी तरीका है। यूटीएफ-8 के लिए, BOM वैकल्पिक है, जबकि यूटीएफ-16 और यूटीएफ-32 एनकोडिंग के लिए यह अनिवार्य है। (ध्यान दें: BOM के बिना यूटीएफ-16 और यूटीएफ-32 को औपचारिक रूप से अलग-अलग नामों से जाना जाता है, वे अलग-अलग एनकोडिंग हैं, और इस प्रकार कुछ प्रकार की एन्कोडिंग घोषणा की आवश्यकता होती है - यूटीएफ-16BE, यूटीएफ-16LE, यूटीएफ-32LE और यूटीएफ-32BE देखें .) BOM कैरेक्टर (U+FEFF) के उपयोग का मतलब है कि एन्कोडिंग स्वचालित रूप से किसी भी प्रोसेसिंग एप्लिकेशन के लिए खुद को घोषित करती है। प्रसंस्करण अनुप्रयोगों को क्रमशः यूटीएफ-32, यूटीएफ-16 या यूटीएफ-8 एन्कोडेड के रूप में दस्तावेज़ की पहचान करने के लिए बाइट स्ट्रीम में प्रारंभिक 0x0000FEFF, 0xFEFF या 0xEFBBBF की तलाश करने की आवश्यकता है। इन एन्कोडिंग के लिए किसी अतिरिक्त मेटाडेटा तंत्र की आवश्यकता नहीं है क्योंकि बाइट-ऑर्डर चिह्न में प्रसंस्करण अनुप्रयोगों के लिए आवश्यक सभी जानकारी सम्मिलित है। ज्यादातर परिस्थितियों में, बाइट-ऑर्डर मार्क कैरेक्टर को अन्य कैरेक्टर्स से अलग एडिटिंग एप्लिकेशन द्वारा हैंडल किया जाता है, इसलिए लेखक द्वारा गलत एन्कोडिंग को इंगित करने के लिए बाइट ऑर्डर मार्क को हटाने या अन्यथा बदलने का बहुत कम जोखिम होता है (जैसा कि एन्कोडिंग घोषित होने पर हो सकता है) अंग्रेजी/लैटिन लिपि में)। यदि दस्तावेज़ में बाइट-ऑर्डर चिह्न का अभाव है, तो तथ्य यह है कि एचटीएमएल दस्तावेज़ में पहला गैर-रिक्त मुद्रण योग्य कैरेक्टर <(U+003C) माना जाता है, जिसका उपयोग यूटीएफ-8/यूटीएफ-16/यूटीएफ- निर्धारित करने के लिए किया जा सकता है। 32 एन्कोडिंग।

एन्कोडिंग ओवरराइडिंग

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

एचटीएमएल दस्तावेज़ों के लिए जो हैं text/एचटीएमएल क्रमबद्ध, मैनुअल ओवरराइड सभी दस्तावेजों पर प्रयुक्त हो सकता है, या केवल उन पर प्रयुक्त हो सकता है जिनके लिए घोषणाओं और/या बाइट पैटर्न को देखकर एन्कोडिंग का पता नहीं लगाया जा सकता है। यह तथ्य कि मैनुअल ओवरराइड उपस्थित है और व्यापक रूप से उपयोग किया जाता है, वेब पर स्पष्ट एन्कोडिंग घोषणाओं को अपनाने में बाधा डालता है; इसलिए समस्या के बने रहने की संभावना है। लेकिन ध्यान दें कि इंटरनेट एक्सप्लोरर, क्रोम और सफारी – एक्सएमएल और दोनों के लिए text/html क्रमबद्धता – पेजमें BOM सम्मिलित होने पर एन्कोडिंग को ओवरराइड करने की अनुमति न दें।[2]

पसंदीदा एक्सएमएल लेबल के साथ क्रमबद्ध एचटीएमएल दस्तावेज़ों के लिए – application/xhtml+xml, मैनुअल एन्कोडिंग ओवरराइड की अनुमति नहीं है। ऐसे एक्सएमएल दस्तावेज़ के एन्कोडिंग को ओवरराइड करने का अर्थ होगा कि दस्तावेज़ एक्सएमएल होना बंद हो गया है, क्योंकि यह पता लगाने योग्य त्रुटियों के साथ एन्कोडिंग घोषणा के लिए एक्सएमएल दस्तावेज़ों के लिए घातक त्रुटि है। वर्तमान में, फ़ायरफ़ॉक्स जैसे गेको ब्राउज़र इस नियम का पालन करते हैं, जबकि अन्य सामान्य ब्राउज़र जो एचटीएमएल को एक्सएमएल के रूप में समर्थन करते हैं, जैसे कि वेबकिट ब्राउज़र (क्रोम / सफारी) [3] एक्सएचटीएमएल दस्तावेज़ों के एन्कोडिंग को मैन्युअल रूप से ओवरराइड करने की अनुमति दें।

वेब ब्राउज़र समर्थन

कई ब्राउज़र पूरे यूनिकोड प्रदर्शनों की सूची के केवल छोटे उपसमुच्चय को प्रदर्शित करने में सक्षम हैं। यहां बताया गया है कि आपका ब्राउज़र विभिन्न यूनिकोड कोड बिंदुओं को कैसे प्रदर्शित करता है:

Example web browser support for Unicode characters
Character एचटीएमएल char ref Unicode name What your browser displays
U+0041 &#65; or &#x41; Latin capital letter A A
U+00DF &#223; or &#xDF; Latin small letter Sharp S ß
U+00FE &#254; or &#xFE; Latin small letter Thorn þ
U+0394 &#916; or &#x394; Greek capital letter Delta Δ
U+017D &#381; or &#x17D; Latin capital letter Z with háček Ž
U+0419 &#1049; or &#x419; Cyrillic capital letter Short I Й
U+05E7 &#1511; or &#x5E7; Hebrew letter Qof ק
U+0645 &#1605; or &#x645; Arabic letter Meem م
U+0E57 &#3671; or &#xE57; Thai digit 7
U+1250 &#4688; or &#x1250; Ge'ez syllable Qha
U+3042 &#12354; or &#x3042; Hiragana letter A (Japanese)
U+53F6 &#21494; or &#x53F6; CJK Unified Ideograph-53F6 (Simplified Chinese "Leaf")
U+8449 &#33865; or &#x8449; CJK Unified Ideograph-8449 (Traditional Chinese "Leaf")
U+B5AB &#46507; or &#xB5AB; Hangul syllable Tteolp (Korean "Ssangtikeut Eo Rieulbieup")
U+16A0 &#5792; or &#x16A0; Runic letter Fehu
U+0D37 &#3383; or &#x0D37; Malayalam letter ഷ (ṣha)
U+1F602 &#128514; or &#x1F602; Face with Tears of Joy emoji 😂
To display all of the characters above, you may need to install one or more large multilingual fonts, like Code2000.

मोज़िला फ़ायरफ़ॉक्स, ओपेरा (वेब ​​ब्राउज़र), सफारी (वेब ​​​​ब्राउज़र) और इंटरनेट एक्सप्लोरर (संस्करण 7 से) जैसे कुछ वेब ब्राउज़र पेजपर प्रत्येक व्यक्तिगत कैरेक्टर को प्रदर्शित करने के लिए बुद्धिमानी से फ़ॉन्ट चुनकर बहुभाषी वेब पेज प्रदर्शित करने में सक्षम हैं। . वे यूनिकोड ब्लॉक के किसी भी मिश्रण को सही ढंग से प्रदर्शित करेंगे, जब तक कि ऑपरेटिंग प्रणाली में टाइपफेस # यूनिकोड फोंट की उपयुक्त सूची उपस्थित हो।

पुराने ब्राउज़र, जैसे नेटस्केप नेविगेटर 4.77 और इंटरनेट एक्सप्लोरर 6, केवल पेजके कैरेक्टर एन्कोडिंग से जुड़े वर्तमान फ़ॉन्ट द्वारा समर्थित पाठ प्रदर्शित कर सकते हैं, और संख्यात्मक कैरेक्टर संदर्भों को वर्तमान कैरेक्टर एन्कोडिंग के भीतर कोड मानों के संदर्भ के रूप में गलत समझ सकते हैं, बल्कि यूनिकोड कोड बिंदुओं के संदर्भ में। जब आप ऐसे ब्राउज़र का उपयोग कर रहे हैं, तो यह संभावना नहीं है कि आपके कंप्यूटर में वे सभी फ़ॉन्ट हों, या यह कि ब्राउज़र एक ही पेजपर सभी उपलब्ध फ़ॉन्ट का उपयोग कर सकता है। परिणामस्वरूप, ब्राउज़र ऊपर दिए गए उदाहरणों में पाठ को सही ढंग से प्रदर्शित नहीं करेगा, हालांकि यह उनमें से एक सबसेट प्रदर्शित कर सकता है। क्योंकि वे मानक के अनुसार एन्कोड किए गए हैं, हालांकि, वे किसी भी प्रणाली पर सही ढंग से प्रदर्शित होंगे जो आज्ञाकारी है और जिसमें अक्षर उपलब्ध हैं। इसके अतिरिक्त, नामित इकाई संदर्भों में उपयोग के लिए दिए गए नाम वाले कैरेक्टर दूसरों की तुलना में अधिक सामान्य रूप से उपलब्ध होने की संभावना है।

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

उपयोग की आवृत्ति

Google के वेब इंडेक्स के आंतरिक डेटा के अनुसार, दिसंबर 2007 में यूटीएफ-8 यूनिकोड एन्कोडिंग वेब पेजों पर सबसे अधिक उपयोग किया जाने वाला एन्कोडिंग बन गया, एएससीआईआई (US) और ISO/IEC 8859-1|8859-1/विंडोज-1252 दोनों को पीछे छोड़ दिया ( पश्चिमी यूरोपियन)।[4]


यह भी देखें

संदर्भ

  1. Ian Hickson (2011). "HTML5". Retrieved 17 September 2011. Authors are encouraged to use UTF-8. Conformance checkers may advise authors against using legacy encodings. [RFC3629] Authoring tools should default to using UTF-8 for newly created documents. [RFC3629]
  2. "12897 – In some parsers, UTF-8 BOM trumps the HTTP charset attribute (Encoding sniffing algorithm)". www.w3.org. Retrieved 2023-03-09.
  3. "66189 – XML parser doesn't emit FATAL ERROR for all, detectable encoding errors". bugs.webkit.org. Retrieved 2023-03-09.
  4. Mark Davis: Moving to Unicode 5.1 Official Google blog, 5 May 2008


बाहरी संबंध