यूनिकोड और एचटीएमएल: Difference between revisions
(Created page with "{{Short description|Relationship between Unicode characters and HTML}} {{Multiple issues| {{primary sources|date=December 2011}} {{essay-like|date=December 2011}} {{refimprove...") |
No edit summary |
||
Line 8: | Line 8: | ||
{{SpecialChars}} | {{SpecialChars}} | ||
{{Html series}} | {{Html series}} | ||
हाइपरटेक्स्ट मार्कअप | हाइपरटेक्स्ट मार्कअप भाषा ([[एचटीएमएल ईमेल]]) का उपयोग करके लिखे गए वेब पेजों में यूनिकोड यूनिवर्सल कैरेक्टर सेट के साथ बहुभाषी टेक्स्ट हो सकता है। यूनिकोड और एचटीएमएल के बीच संबंध की कुंजी दस्तावेज़ वर्ण सेट के बीच संबंध है, जो वर्णों के सेट को परिभाषित करता है जो एक एचटीएमएल दस्तावेज़ में मौजूद हो सकता है और उन्हें संख्याएँ निर्दिष्ट करता है, और बाहरी वर्ण एन्कोडिंग, या चारसेट, एक को एन्कोड करने के लिए उपयोग किया जाता है। बाइट्स के अनुक्रम के रूप में दिया गया दस्तावेज़। | ||
RFC 1866 में, प्रारंभिक | RFC 1866 में, प्रारंभिक एचटीएमएल 2.0 मानक, दस्तावेज़ वर्ण सेट को ISO-8859-1 के रूप में परिभाषित किया गया था (बाद में एचटीएमएल मानक [[Windows-1252]] एन्कोडिंग के लिए डिफ़ॉल्ट)। इसे [[आईएसओ 10646]] (जो मूल रूप से यूनिकोड के बराबर है) तक बढ़ाया गया था {{IETF RFC|2070}}. यह विभिन्न भाषाओं के दस्तावेज़ों या विभिन्न प्लेटफार्मों पर बनाए गए दस्तावेज़ों के बीच भिन्न नहीं होता है। बाहरी [[अक्षरों को सांकेतिक अक्षरों में बदलना]] दस्तावेज़ के लेखक (या दस्तावेज़ बनाने के लिए लेखक द्वारा उपयोग किए जाने वाले सॉफ़्टवेयर) द्वारा चुना जाता है और यह निर्धारित करता है कि दस्तावेज़ वर्ण सेट से वर्णों को दस्तावेज़ मानचित्र को संग्रहीत करने और/या संचारित करने के लिए बाइट्स का उपयोग कैसे किया जाता है। चयनित बाहरी वर्ण एन्कोडिंग में मौजूद वर्ण वर्ण इकाई संदर्भों द्वारा प्रदर्शित नहीं किए जा सकते हैं। | ||
[[यूनिकोड]] और | [[यूनिकोड]] और एचटीएमएल के बीच संबंध कई कंप्यूटर पेशेवरों, दस्तावेज़ लेखकों और [[वर्ल्ड वाइड वेब]] उपयोगकर्ताओं के लिए समान रूप से एक कठिन विषय है। विभिन्न [[प्राकृतिक भाषा]]ओं और लेखन प्रणालियों से [[ वेब पृष्ठ ]]ों में पाठ का सटीक प्रतिनिधित्व वर्ण एन्कोडिंग, मार्कअप भाषा सिंटैक्स, [[कंप्यूटर फ़ॉन्ट]] और [[वेब ब्राउज़र]]ों द्वारा समर्थन के विभिन्न स्तरों के विवरण से जटिल है। | ||
== | == एचटीएमएल दस्तावेज़ वर्ण == | ||
वेब पेज आमतौर पर | वेब पेज आमतौर पर एचटीएमएल या [[XHTML|Xएचटीएमएल]] दस्तावेज़ होते हैं। दोनों प्रकार के दस्तावेजों में एक मौलिक स्तर पर, [[चरित्र (कंप्यूटिंग)]] होते हैं, जो कि [[ग्रफीम]] और ग्रेफेम जैसी इकाइयाँ हैं, जो इस बात से स्वतंत्र हैं कि वे [[ कंप्यूटर भंडारण ]] सिस्टम और [[ संगणक संजाल ]] में कैसे प्रकट होते हैं। | ||
एक | एक एचटीएमएल दस्तावेज़ यूनिकोड वर्णों का एक क्रम है। अधिक विशेष रूप से, एचटीएमएल 4.0 दस्तावेज़ों को एचटीएमएल दस्तावेज़ वर्ण सेट में वर्णों को शामिल करने की आवश्यकता होती है: एक वर्ण प्रदर्शनों की सूची जिसमें प्रत्येक वर्ण को एक अद्वितीय, गैर-नकारात्मक पूर्णांक कोड बिंदु निर्दिष्ट किया जाता है। यह सेट एचटीएमएल 4.0 [[दस्तावेज़ प्रकार परिभाषा]] में परिभाषित किया गया है, जो सिंटैक्स (वर्णों के स्वीकार्य क्रम) को भी स्थापित करता है जो एक वैध एचटीएमएल दस्तावेज़ का उत्पादन कर सकता है। एचटीएमएल 4.0 के लिए निर्धारित एचटीएमएल दस्तावेज़ वर्ण में अधिकांश, लेकिन सभी नहीं, यूनिकोड और ISO/IEC 10646 द्वारा संयुक्त रूप से परिभाषित वर्ण शामिल हैं: [[यूनिवर्सल कैरेक्टर सेट]] (UCS)। | ||
एचटीएमएल दस्तावेज़ों की तरह, एक Xएचटीएमएल दस्तावेज़ यूनिकोड वर्णों का एक क्रम है। हालांकि, एक एक्स[[एचटीएमएल]] दस्तावेज़ एक [[एक्सएमएल]] दस्तावेज़ है, जो अमूर्तता की एक स्पष्ट दस्तावेज़ चरित्र परत नहीं होने के बावजूद, अनुमेय वर्णों की एक समान परिभाषा पर निर्भर करता है जो यूनिकोड / यूसीएस वर्ण परिभाषाओं के अधिकांश, लेकिन सभी को कवर नहीं करता है। एचटीएमएल और Xएचटीएमएल/XML द्वारा उपयोग किए जाने वाले सेट थोड़े अलग हैं, लेकिन इन अंतरों का औसत दस्तावेज़ लेखक पर बहुत कम प्रभाव पड़ता है। | |||
भले ही दस्तावेज़ | भले ही दस्तावेज़ एचटीएमएल या Xएचटीएमएल हो, जब [[फाइल सिस्टम]] पर संग्रहीत किया जाता है या किसी नेटवर्क पर प्रसारित किया जाता है, तो दस्तावेज़ के वर्णों को एक विशेष वर्ण एन्कोडिंग के अनुसार [[ अंश ]] [[ऑक्टेट (कंप्यूटिंग)]] एस ([[बाइट]]्स) के अनुक्रम के रूप में एन्कोड किया जाता है। यह एन्कोडिंग या तो एक [[यूनिकोड परिवर्तन प्रारूप]] हो सकता है, जैसे [[UTF-8]], जो किसी भी यूनिकोड वर्ण को सीधे एन्कोड कर सकता है, या एक लीगेसी एन्कोडिंग, जैसे Windows-1252, जो नहीं कर सकता। हालांकि, एन्कोडिंग का उपयोग करते समय भी जो सभी यूनिकोड वर्णों का समर्थन नहीं करते हैं, एन्कोडेड दस्तावेज़ संख्यात्मक वर्ण संदर्भों का उपयोग कर सकता है। उदाहरण के लिए, <code>&#x263A;</code> (☺) का उपयोग यूनिकोड वर्ण सेट में मुस्कुराते हुए चेहरे के चरित्र को इंगित करने के लिए किया जाता है। | ||
=== वर्ण एन्कोडिंग === | === वर्ण एन्कोडिंग === | ||
संख्यात्मक वर्ण संदर्भों का सहारा लिए बिना सभी यूनिकोड वर्णों का समर्थन करने के लिए, एक वेब पेज में सभी यूनिकोड को शामिल करने वाला एक एन्कोडिंग होना चाहिए। सबसे लोकप्रिय UTF-8 है, जहां [[ASCII]] वर्ण, जैसे अंग्रेजी अक्षर, अंक, और कुछ अन्य सामान्य वर्ण ASCII के विरुद्ध अपरिवर्तित संरक्षित किए जाते हैं। यह | संख्यात्मक वर्ण संदर्भों का सहारा लिए बिना सभी यूनिकोड वर्णों का समर्थन करने के लिए, एक वेब पेज में सभी यूनिकोड को शामिल करने वाला एक एन्कोडिंग होना चाहिए। सबसे लोकप्रिय UTF-8 है, जहां [[ASCII]] वर्ण, जैसे अंग्रेजी अक्षर, अंक, और कुछ अन्य सामान्य वर्ण ASCII के विरुद्ध अपरिवर्तित संरक्षित किए जाते हैं। यह एचटीएमएल कोड (जैसे <br> और ) को ASCII की तुलना में अपरिवर्तित बनाता है। ASCII श्रेणी के बाहर के वर्ण 2–4 बाइट्स में संग्रहित किए जाते हैं। [[UTF-16]] का उपयोग करना भी संभव है जहां अधिकांश वर्णों को अलग-अलग [[endianness]] के साथ दो बाइट के रूप में संग्रहीत किया जाता है, जो आधुनिक ब्राउज़रों द्वारा समर्थित है लेकिन आमतौर पर कम उपयोग किया जाता है। | ||
=== संख्यात्मक चरित्र संदर्भ === | === संख्यात्मक चरित्र संदर्भ === | ||
{{Main|Numeric character reference}} | {{Main|Numeric character reference}} | ||
लीगेसी एन्कोडिंग की सीमाओं के आसपास काम करने के लिए, | लीगेसी एन्कोडिंग की सीमाओं के आसपास काम करने के लिए, एचटीएमएल को इस तरह डिज़ाइन किया गया है कि एक संख्यात्मक वर्ण संदर्भ का उपयोग करके एक एचटीएमएल दस्तावेज़ के अंदर संपूर्ण यूनिकोड के वर्णों का प्रतिनिधित्व करना संभव है: वर्णों का एक क्रम जो यूनिकोड कोड बिंदु को स्पष्ट रूप से बताता है जिस पात्र का प्रतिनिधित्व किया जा रहा है। एक चरित्र संदर्भ रूप लेता है<code>&#</code><var>एन</var><code>;</code>, जहां <var>N</var> या तो यूनिकोड कोड बिंदु के लिए एक [[दशमलव]] संख्या है, या एक [[हेक्साडेसिमल]] संख्या है, जिस स्थिति में इसे इसके द्वारा उपसर्ग किया जाना चाहिए <code>x</code>. संख्यात्मक वर्ण संदर्भ बनाने वाले वर्ण इंटरनेट पर उपयोग के लिए स्वीकृत प्रत्येक एन्कोडिंग में सार्वभौमिक रूप से प्रतिनिधित्व योग्य हैं।{{citation needed|date=June 2022}} | ||
इस संदर्भ में हेक्साडेसिमल के लिए समर्थन हाल ही का है, इसलिए पुराने ब्राउज़रों को हेक्साडेसिमल संख्याओं के साथ संदर्भित वर्णों को प्रदर्शित करने में समस्या हो सकती है{{snd}} लेकिन उन्हें वैसे भी कोड पॉइंट 255 से ऊपर यूनिकोड वर्णों को प्रदर्शित करने में समस्या होगी। पुराने ब्राउज़रों के साथ बेहतर संगतता सुनिश्चित करने के लिए, हेक्साडेसिमल कोड बिंदु को दशमलव मान में परिवर्तित करना अभी भी एक सामान्य अभ्यास है (उदाहरण के लिए <code>&#21512;</code> के बजाय <code>&#x5408;</code>).{{citation needed|date=June 2022}} | इस संदर्भ में हेक्साडेसिमल के लिए समर्थन हाल ही का है, इसलिए पुराने ब्राउज़रों को हेक्साडेसिमल संख्याओं के साथ संदर्भित वर्णों को प्रदर्शित करने में समस्या हो सकती है{{snd}} लेकिन उन्हें वैसे भी कोड पॉइंट 255 से ऊपर यूनिकोड वर्णों को प्रदर्शित करने में समस्या होगी। पुराने ब्राउज़रों के साथ बेहतर संगतता सुनिश्चित करने के लिए, हेक्साडेसिमल कोड बिंदु को दशमलव मान में परिवर्तित करना अभी भी एक सामान्य अभ्यास है (उदाहरण के लिए <code>&#21512;</code> के बजाय <code>&#x5408;</code>).{{citation needed|date=June 2022}} | ||
Line 36: | Line 36: | ||
{{Main|character entity reference}} | {{Main|character entity reference}} | ||
एचटीएमएल 4 में, वर्णों के लिए 252 नामित वर्ण संस्थाओं का एक मानक सेट है - कुछ सामान्य, कुछ अस्पष्ट - जो या तो कुछ वर्ण एन्कोडिंग में नहीं पाए जाते हैं या कुछ संदर्भों में मार्कअप संवेदनशील होते हैं (उदाहरण के लिए कोण कोष्ठक और उद्धरण चिह्न)। हालांकि किसी भी यूनिकोड वर्ण को उसके संख्यात्मक कोड बिंदु द्वारा संदर्भित किया जा सकता है, कुछ एचटीएमएल दस्तावेज़ लेखक इसके बजाय इन नामित संस्थाओं का उपयोग करना पसंद करते हैं, जहां संभव हो, क्योंकि वे कम गूढ़ हैं और शुरुआती ब्राउज़रों द्वारा बेहतर समर्थित थे। | |||
इकाई संदर्भों के उपयोग के माध्यम से चरित्र संस्थाओं को एक | इकाई संदर्भों के उपयोग के माध्यम से चरित्र संस्थाओं को एक एचटीएमएल दस्तावेज़ में शामिल किया जा सकता है, जो '<code>&</code><var>EntityName</var><code>;</code>, जहां <var>EntityName</var> इकाई का नाम है। उदाहरण के लिए, <code>&mdash;</code>, बहुत कुछ एक सा <code>&#8212;</code> या <code>&#x2014;</code>, प्रतिनिधित्व करता है {{U+|2014}}: em डैश वर्ण — भले ही प्रयुक्त वर्ण एन्कोडिंग में वह वर्ण न हो। | ||
पूरी सूची के लिए, देखें: XML और | पूरी सूची के लिए, देखें: XML और एचटीएमएल वर्ण इकाई संदर्भों की सूची। | ||
== वर्ण एन्कोडिंग निर्धारण == | == वर्ण एन्कोडिंग निर्धारण == | ||
एचटीएमएल को सही ढंग से संसाधित करने के लिए, एक वेब ब्राउज़र को यह पता लगाना चाहिए कि कौन से यूनिकोड वर्ण एचटीएमएल दस्तावेज़ के एन्कोडेड रूप से दर्शाए गए हैं। ऐसा करने के लिए, वेब ब्राउज़र को पता होना चाहिए कि किस एन्कोडिंग का उपयोग किया गया था। | |||
=== एन्कोडिंग जानकारी === | === एन्कोडिंग जानकारी === | ||
जब कोई दस्तावेज़ [[MIME]] संदेश या परिवहन के माध्यम से प्रेषित होता है जो MIME सामग्री प्रकार जैसे [[HTTP]] प्रतिक्रिया का उपयोग करता है, तो संदेश सामग्री-प्रकार शीर्षलेख के माध्यम से एन्कोडिंग को संकेत दे सकता है, जैसे <code>Content-Type: text/ | जब कोई दस्तावेज़ [[MIME]] संदेश या परिवहन के माध्यम से प्रेषित होता है जो MIME सामग्री प्रकार जैसे [[HTTP]] प्रतिक्रिया का उपयोग करता है, तो संदेश सामग्री-प्रकार शीर्षलेख के माध्यम से एन्कोडिंग को संकेत दे सकता है, जैसे <code>Content-Type: text/एचटीएमएल; charset=UTF-8</code>. एन्कोडिंग घोषित करने के अन्य बाहरी साधनों की अनुमति है लेकिन शायद ही कभी इस्तेमाल किया जाता है। यदि दस्तावेज़ यूनिकोड एन्कोडिंग की तुलना का उपयोग करता है, तो एन्कोडिंग जानकारी [[बाइट ऑर्डर मार्क]] (बीओएम) के रूप में भी मौजूद हो सकती है। अंत में, एन्कोडिंग को एचटीएमएल सिंटैक्स के माध्यम से घोषित किया जा सकता है। के लिए <code>text/एचटीएमएल</code> क्रमांकन तब तक, जब तक पृष्ठ ASCII के विस्तार में एन्कोड किया गया हो (जैसे UTF-8, और इस प्रकार, यदि पृष्ठ UTF-16 का उपयोग नहीं कर रहा है), a <code>meta</code> तत्व, जैसे <code><meta http-equiv="content-type" content="text/एचटीएमएल; charset=UTF-8"></code> या ([[HTML5|एचटीएमएल5]] से शुरू) <code><meta charset="UTF-8"></code> इस्तेमाल किया जा सकता है। एक्सएमएल के रूप में क्रमबद्ध एचटीएमएल पृष्ठों के लिए, घोषणा विकल्प या तो एन्कोडिंग डिफ़ॉल्ट (जो एक्सएमएल दस्तावेजों के लिए यूटीएफ -8 है) पर भरोसा करना है, या एक्सएमएल एन्कोडिंग घोषणा का उपयोग करना है। XML के रूप में प्रस्तुत एचटीएमएल में मेटा विशेषता कोई भूमिका नहीं निभाती है। | ||
=== एन्कोडिंग डिफ़ॉल्ट === | === एन्कोडिंग डिफ़ॉल्ट === | ||
एक एन्कोडिंग डिफ़ॉल्ट तब लागू होता है जब कोई बाहरी या आंतरिक एन्कोडिंग घोषणा नहीं होती है और कोई बाइट ऑर्डर चिह्न भी नहीं होता है। जबकि XML के रूप में प्रस्तुत किए गए | एक एन्कोडिंग डिफ़ॉल्ट तब लागू होता है जब कोई बाहरी या आंतरिक एन्कोडिंग घोषणा नहीं होती है और कोई बाइट ऑर्डर चिह्न भी नहीं होता है। जबकि XML के रूप में प्रस्तुत किए गए एचटीएमएल पृष्ठों के लिए एन्कोडिंग डिफ़ॉल्ट UTF-8 होना आवश्यक है, एक नियमित वेब पेज के लिए एन्कोडिंग डिफ़ॉल्ट (अर्थात: एचटीएमएल पृष्ठों के लिए क्रमबद्ध रूप से <code>text/एचटीएमएल</code>) ब्राउज़र के स्थानीयकरण के आधार पर भिन्न होता है। मुख्य रूप से पश्चिमी यूरोपीय भाषाओं के लिए स्थापित सिस्टम के लिए, यह आमतौर पर ISO 8859-1#Windows-1252|Windows-1252 होगा। सिरिलिक वर्णमाला स्थानों के लिए, डिफ़ॉल्ट आमतौर पर [[Windows-1251]] है। किसी ऐसे स्थान के ब्राउज़र के लिए जहां लीगेसी मल्टी-बाइट कैरेक्टर एनकोडिंग प्रचलित हैं, ऑटो-डिटेक्शन के कुछ रूप लागू होने की संभावना है। | ||
=== एन्कोडिंग रुझान === | === एन्कोडिंग रुझान === | ||
[[प्रोग्रामिंग भाषा]]ओं और [[ऑपरेटिंग सिस्टम]] में 8-बिट पाठ प्रस्तुतियों की विरासत और एन्कोडिंग की बारीकियों को समझने की आवश्यकता के साथ बोझिल उपयोगकर्ताओं से बचने की इच्छा के कारण, | [[प्रोग्रामिंग भाषा]]ओं और [[ऑपरेटिंग सिस्टम]] में 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 के लिए। | ||
=== बाइट ऑर्डर मार्क/यूनिकोड सूँघना === | === बाइट ऑर्डर मार्क/यूनिकोड सूँघना === | ||
एचटीएमएल (सामग्री-प्रकार टेक्स्ट/एचटीएमएल और सामग्री/प्रकार एप्लिकेशन/एक्सएचटीएमएल+एक्सएमएल) के दोनों सीरियलाइजेशन के लिए, बाइट ऑर्डर मार्क (बीओएम) एचटीएमएल दस्तावेज़ के भीतर एन्कोडिंग जानकारी प्रसारित करने का एक प्रभावी तरीका है। 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 की तलाश करने की आवश्यकता है। इन एन्कोडिंग के लिए किसी अतिरिक्त मेटाडेटा तंत्र की आवश्यकता नहीं है क्योंकि बाइट-ऑर्डर चिह्न में प्रसंस्करण अनुप्रयोगों के लिए आवश्यक सभी जानकारी शामिल है। ज्यादातर परिस्थितियों में, बाइट-ऑर्डर मार्क कैरेक्टर को अन्य कैरेक्टर्स से अलग एडिटिंग एप्लिकेशन द्वारा हैंडल किया जाता है, इसलिए लेखक द्वारा गलत एन्कोडिंग को इंगित करने के लिए बाइट ऑर्डर मार्क को हटाने या अन्यथा बदलने का बहुत कम जोखिम होता है (जैसा कि एन्कोडिंग घोषित होने पर हो सकता है) अंग्रेजी/लैटिन लिपि में)। यदि दस्तावेज़ में बाइट-ऑर्डर चिह्न का अभाव है, तो तथ्य यह है कि | एचटीएमएल (सामग्री-प्रकार टेक्स्ट/एचटीएमएल और सामग्री/प्रकार एप्लिकेशन/एक्सएचटीएमएल+एक्सएमएल) के दोनों सीरियलाइजेशन के लिए, बाइट ऑर्डर मार्क (बीओएम) एचटीएमएल दस्तावेज़ के भीतर एन्कोडिंग जानकारी प्रसारित करने का एक प्रभावी तरीका है। 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 एन्कोडिंग। | ||
=== एन्कोडिंग ओवरराइडिंग === | === एन्कोडिंग ओवरराइडिंग === | ||
कई | कई एचटीएमएल दस्तावेज़ों को गलत एन्कोडिंग जानकारी, या कोई एन्कोडिंग जानकारी बिल्कुल नहीं दी जाती है। ऐसे मामलों में एन्कोडिंग निर्धारित करने के लिए, कई ब्राउज़र उपयोगकर्ता को किसी सूची से मैन्युअल रूप से एन्कोडिंग नाम चुनने की अनुमति देते हैं। वे एक एन्कोडिंग ऑटो-डिटेक्शन एल्गोरिदम भी नियोजित कर सकते हैं जो कंसर्ट में या के साथ काम करता है{{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> | |||
पसंदीदा XML लेबल के साथ क्रमबद्ध | पसंदीदा 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> एक्सएचटीएमएल दस्तावेज़ों के एन्कोडिंग को मैन्युअल रूप से ओवरराइड करने की अनुमति दें। | ||
== वेब ब्राउज़र समर्थन == | == वेब ब्राउज़र समर्थन == | ||
Line 70: | Line 70: | ||
|- | |- | ||
! scope="col" |Character | ! scope="col" |Character | ||
! scope="col" | | ! scope="col" |एचटीएमएल char ref | ||
! scope="col" |Unicode name | ! scope="col" |Unicode name | ||
! scope="col" |What your browser displays | ! scope="col" |What your browser displays | ||
Line 173: | Line 173: | ||
== यह भी देखें == | == यह भी देखें == | ||
* मेटा: सहायता: विशेष वर्ण | * मेटा: सहायता: विशेष वर्ण | ||
* [[HTML में कैरेक्टर एनकोडिंग]] | * [[HTML में कैरेक्टर एनकोडिंग|एचटीएमएल में कैरेक्टर एनकोडिंग]] | ||
* वर्णसेट का पता लगाना | * वर्णसेट का पता लगाना | ||
* wikibooks: यूनिकोड/चरित्र संदर्भ|यूनिकोड चरित्र संदर्भ (wikibooks) | * wikibooks: यूनिकोड/चरित्र संदर्भ|यूनिकोड चरित्र संदर्भ (wikibooks) | ||
Line 184: | Line 184: | ||
{{toomanylinks|date=April 2020}} | {{toomanylinks|date=April 2020}} | ||
*[http://www.w3.org/TR/unicode-xml/ Unicode in XML and other Markup Languages] - a W3C & Unicode Consortium joint publication that describes issues and provides guidelines relating to Unicode in markup languages | *[http://www.w3.org/TR/unicode-xml/ Unicode in XML and other Markup Languages] - a W3C & Unicode Consortium joint publication that describes issues and provides guidelines relating to Unicode in markup languages | ||
*[http://www.w3.org/TR/REC-html40/HTMLlat1.ent Latin-1], [http://www.w3.org/TR/REC-html40/HTMLspecial.ent "Special"], and [http://www.w3.org/TR/REC-html40/HTMLsymbol.ent Mathematical, Greek and Symbolic] named character entity definitions for | *[http://www.w3.org/TR/REC-html40/HTMLlat1.ent Latin-1], [http://www.w3.org/TR/REC-html40/HTMLspecial.ent "Special"], and [http://www.w3.org/TR/REC-html40/HTMLsymbol.ent Mathematical, Greek and Symbolic] named character entity definitions for एचटीएमएल 4.01 | ||
*[http://www.unicodemap.org/ UnicodeMap.org] - Browse Unicode characters, ranges, and other information | *[http://www.unicodemap.org/ UnicodeMap.org] - Browse Unicode characters, ranges, and other information | ||
*[http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi SIL's freeware fonts, editors and documentation] | *[http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi SIL's freeware fonts, editors and documentation] | ||
*[http://www.alanwood.net/unicode/ Alan Wood’s Unicode Resources] - Unicode fonts and information. | *[http://www.alanwood.net/unicode/ Alan Wood’s Unicode Resources] - Unicode fonts and information. | ||
*http://www.phon.ucl.ac.uk/home/wells/ipa-unicode.htm The International Phonetic Alphabet in Unicode | *http://www.phon.ucl.ac.uk/home/wells/ipa-unicode.htm The International Phonetic Alphabet in Unicode | ||
*http://www.alanwood.net/unicode/cjk_compatibility_ideographs.html CJK Compatibility Ideographs | *[http://www.alanwood.net/unicode/cjk_compatibility_ideographs.html http://www.alanwood.net/unicode/cjk_compatibility_ideographs.एचटीएमएल] CJK Compatibility Ideographs | ||
*http://www.unicode.org/charts/ Unicode character charts; hexadecimal numbers only; PDF files showing all characters independent of browser capabilities | *http://www.unicode.org/charts/ Unicode character charts; hexadecimal numbers only; PDF files showing all characters independent of browser capabilities | ||
*[http://unicode.coeurlumiere.com/ Table of Unicode characters from 1 to 65535] {{Webarchive|url=https://web.archive.org/web/20071103125951/http://unicode.coeurlumiere.com/ |date=2007-11-03 }} - shows how they look in one's browser | *[http://unicode.coeurlumiere.com/ Table of Unicode characters from 1 to 65535] {{Webarchive|url=https://web.archive.org/web/20071103125951/http://unicode.coeurlumiere.com/ |date=2007-11-03 }} - shows how they look in one's browser | ||
*[http://www.pinyin.info/tools/converter/chars2uninumbers.html Web tool that converts "special" characters (such as Chinese characters) to Unicode numeric character references] | *[http://www.pinyin.info/tools/converter/chars2uninumbers.html Web tool that converts "special" characters (such as Chinese characters) to Unicode numeric character references] | ||
*[http://www.hotpeachpages.net/a/characters.html Multi-lingual web pages and Unicode] - how to fix display problems | *[http://www.hotpeachpages.net/a/characters.html Multi-lingual web pages and Unicode] - how to fix display problems | ||
*[https://web.archive.org/web/20110924073701/http://www.w3.org/TR/html5/semantics.html#charset w3.org via web.archive.org] - Original | *[https://web.archive.org/web/20110924073701/http://www.w3.org/TR/html5/semantics.html#charset w3.org via web.archive.org] - Original एचटीएमएल5 Citation Reference saved via Wayback Machine | ||
{{Unicode navigation}} | {{Unicode navigation}} | ||
[[Category: एचटीएमएल]] [[Category: यूनिकोड]] | [[Category: एचटीएमएल]] [[Category: यूनिकोड]] |
Revision as of 09:21, 19 June 2023
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)
(Learn how and when to remove this template message)
|
HTML |
---|
Comparisons |
हाइपरटेक्स्ट मार्कअप भाषा (एचटीएमएल ईमेल) का उपयोग करके लिखे गए वेब पेजों में यूनिकोड यूनिवर्सल कैरेक्टर सेट के साथ बहुभाषी टेक्स्ट हो सकता है। यूनिकोड और एचटीएमएल के बीच संबंध की कुंजी दस्तावेज़ वर्ण सेट के बीच संबंध है, जो वर्णों के सेट को परिभाषित करता है जो एक एचटीएमएल दस्तावेज़ में मौजूद हो सकता है और उन्हें संख्याएँ निर्दिष्ट करता है, और बाहरी वर्ण एन्कोडिंग, या चारसेट, एक को एन्कोड करने के लिए उपयोग किया जाता है। बाइट्स के अनुक्रम के रूप में दिया गया दस्तावेज़।
RFC 1866 में, प्रारंभिक एचटीएमएल 2.0 मानक, दस्तावेज़ वर्ण सेट को ISO-8859-1 के रूप में परिभाषित किया गया था (बाद में एचटीएमएल मानक Windows-1252 एन्कोडिंग के लिए डिफ़ॉल्ट)। इसे आईएसओ 10646 (जो मूल रूप से यूनिकोड के बराबर है) तक बढ़ाया गया था RFC 2070. यह विभिन्न भाषाओं के दस्तावेज़ों या विभिन्न प्लेटफार्मों पर बनाए गए दस्तावेज़ों के बीच भिन्न नहीं होता है। बाहरी अक्षरों को सांकेतिक अक्षरों में बदलना दस्तावेज़ के लेखक (या दस्तावेज़ बनाने के लिए लेखक द्वारा उपयोग किए जाने वाले सॉफ़्टवेयर) द्वारा चुना जाता है और यह निर्धारित करता है कि दस्तावेज़ वर्ण सेट से वर्णों को दस्तावेज़ मानचित्र को संग्रहीत करने और/या संचारित करने के लिए बाइट्स का उपयोग कैसे किया जाता है। चयनित बाहरी वर्ण एन्कोडिंग में मौजूद वर्ण वर्ण इकाई संदर्भों द्वारा प्रदर्शित नहीं किए जा सकते हैं।
यूनिकोड और एचटीएमएल के बीच संबंध कई कंप्यूटर पेशेवरों, दस्तावेज़ लेखकों और वर्ल्ड वाइड वेब उपयोगकर्ताओं के लिए समान रूप से एक कठिन विषय है। विभिन्न प्राकृतिक भाषाओं और लेखन प्रणालियों से वेब पृष्ठ ों में पाठ का सटीक प्रतिनिधित्व वर्ण एन्कोडिंग, मार्कअप भाषा सिंटैक्स, कंप्यूटर फ़ॉन्ट और वेब ब्राउज़रों द्वारा समर्थन के विभिन्न स्तरों के विवरण से जटिल है।
एचटीएमएल दस्तावेज़ वर्ण
वेब पेज आमतौर पर एचटीएमएल या Xएचटीएमएल दस्तावेज़ होते हैं। दोनों प्रकार के दस्तावेजों में एक मौलिक स्तर पर, चरित्र (कंप्यूटिंग) होते हैं, जो कि ग्रफीम और ग्रेफेम जैसी इकाइयाँ हैं, जो इस बात से स्वतंत्र हैं कि वे कंप्यूटर भंडारण सिस्टम और संगणक संजाल में कैसे प्रकट होते हैं।
एक एचटीएमएल दस्तावेज़ यूनिकोड वर्णों का एक क्रम है। अधिक विशेष रूप से, एचटीएमएल 4.0 दस्तावेज़ों को एचटीएमएल दस्तावेज़ वर्ण सेट में वर्णों को शामिल करने की आवश्यकता होती है: एक वर्ण प्रदर्शनों की सूची जिसमें प्रत्येक वर्ण को एक अद्वितीय, गैर-नकारात्मक पूर्णांक कोड बिंदु निर्दिष्ट किया जाता है। यह सेट एचटीएमएल 4.0 दस्तावेज़ प्रकार परिभाषा में परिभाषित किया गया है, जो सिंटैक्स (वर्णों के स्वीकार्य क्रम) को भी स्थापित करता है जो एक वैध एचटीएमएल दस्तावेज़ का उत्पादन कर सकता है। एचटीएमएल 4.0 के लिए निर्धारित एचटीएमएल दस्तावेज़ वर्ण में अधिकांश, लेकिन सभी नहीं, यूनिकोड और ISO/IEC 10646 द्वारा संयुक्त रूप से परिभाषित वर्ण शामिल हैं: यूनिवर्सल कैरेक्टर सेट (UCS)।
एचटीएमएल दस्तावेज़ों की तरह, एक Xएचटीएमएल दस्तावेज़ यूनिकोड वर्णों का एक क्रम है। हालांकि, एक एक्सएचटीएमएल दस्तावेज़ एक एक्सएमएल दस्तावेज़ है, जो अमूर्तता की एक स्पष्ट दस्तावेज़ चरित्र परत नहीं होने के बावजूद, अनुमेय वर्णों की एक समान परिभाषा पर निर्भर करता है जो यूनिकोड / यूसीएस वर्ण परिभाषाओं के अधिकांश, लेकिन सभी को कवर नहीं करता है। एचटीएमएल और Xएचटीएमएल/XML द्वारा उपयोग किए जाने वाले सेट थोड़े अलग हैं, लेकिन इन अंतरों का औसत दस्तावेज़ लेखक पर बहुत कम प्रभाव पड़ता है।
भले ही दस्तावेज़ एचटीएमएल या Xएचटीएमएल हो, जब फाइल सिस्टम पर संग्रहीत किया जाता है या किसी नेटवर्क पर प्रसारित किया जाता है, तो दस्तावेज़ के वर्णों को एक विशेष वर्ण एन्कोडिंग के अनुसार अंश ऑक्टेट (कंप्यूटिंग) एस (बाइट्स) के अनुक्रम के रूप में एन्कोड किया जाता है। यह एन्कोडिंग या तो एक यूनिकोड परिवर्तन प्रारूप हो सकता है, जैसे UTF-8, जो किसी भी यूनिकोड वर्ण को सीधे एन्कोड कर सकता है, या एक लीगेसी एन्कोडिंग, जैसे Windows-1252, जो नहीं कर सकता। हालांकि, एन्कोडिंग का उपयोग करते समय भी जो सभी यूनिकोड वर्णों का समर्थन नहीं करते हैं, एन्कोडेड दस्तावेज़ संख्यात्मक वर्ण संदर्भों का उपयोग कर सकता है। उदाहरण के लिए, ☺
(☺) का उपयोग यूनिकोड वर्ण सेट में मुस्कुराते हुए चेहरे के चरित्र को इंगित करने के लिए किया जाता है।
वर्ण एन्कोडिंग
संख्यात्मक वर्ण संदर्भों का सहारा लिए बिना सभी यूनिकोड वर्णों का समर्थन करने के लिए, एक वेब पेज में सभी यूनिकोड को शामिल करने वाला एक एन्कोडिंग होना चाहिए। सबसे लोकप्रिय UTF-8 है, जहां ASCII वर्ण, जैसे अंग्रेजी अक्षर, अंक, और कुछ अन्य सामान्य वर्ण ASCII के विरुद्ध अपरिवर्तित संरक्षित किए जाते हैं। यह एचटीएमएल कोड (जैसे
और ) को ASCII की तुलना में अपरिवर्तित बनाता है। ASCII श्रेणी के बाहर के वर्ण 2–4 बाइट्स में संग्रहित किए जाते हैं। UTF-16 का उपयोग करना भी संभव है जहां अधिकांश वर्णों को अलग-अलग endianness के साथ दो बाइट के रूप में संग्रहीत किया जाता है, जो आधुनिक ब्राउज़रों द्वारा समर्थित है लेकिन आमतौर पर कम उपयोग किया जाता है।
संख्यात्मक चरित्र संदर्भ
लीगेसी एन्कोडिंग की सीमाओं के आसपास काम करने के लिए, एचटीएमएल को इस तरह डिज़ाइन किया गया है कि एक संख्यात्मक वर्ण संदर्भ का उपयोग करके एक एचटीएमएल दस्तावेज़ के अंदर संपूर्ण यूनिकोड के वर्णों का प्रतिनिधित्व करना संभव है: वर्णों का एक क्रम जो यूनिकोड कोड बिंदु को स्पष्ट रूप से बताता है जिस पात्र का प्रतिनिधित्व किया जा रहा है। एक चरित्र संदर्भ रूप लेता है&#
एन;
, जहां N या तो यूनिकोड कोड बिंदु के लिए एक दशमलव संख्या है, या एक हेक्साडेसिमल संख्या है, जिस स्थिति में इसे इसके द्वारा उपसर्ग किया जाना चाहिए x
. संख्यात्मक वर्ण संदर्भ बनाने वाले वर्ण इंटरनेट पर उपयोग के लिए स्वीकृत प्रत्येक एन्कोडिंग में सार्वभौमिक रूप से प्रतिनिधित्व योग्य हैं।[citation needed]
इस संदर्भ में हेक्साडेसिमल के लिए समर्थन हाल ही का है, इसलिए पुराने ब्राउज़रों को हेक्साडेसिमल संख्याओं के साथ संदर्भित वर्णों को प्रदर्शित करने में समस्या हो सकती है – लेकिन उन्हें वैसे भी कोड पॉइंट 255 से ऊपर यूनिकोड वर्णों को प्रदर्शित करने में समस्या होगी। पुराने ब्राउज़रों के साथ बेहतर संगतता सुनिश्चित करने के लिए, हेक्साडेसिमल कोड बिंदु को दशमलव मान में परिवर्तित करना अभी भी एक सामान्य अभ्यास है (उदाहरण के लिए 合
के बजाय 合
).[citation needed]
नामित वर्ण संस्थाएं
एचटीएमएल 4 में, वर्णों के लिए 252 नामित वर्ण संस्थाओं का एक मानक सेट है - कुछ सामान्य, कुछ अस्पष्ट - जो या तो कुछ वर्ण एन्कोडिंग में नहीं पाए जाते हैं या कुछ संदर्भों में मार्कअप संवेदनशील होते हैं (उदाहरण के लिए कोण कोष्ठक और उद्धरण चिह्न)। हालांकि किसी भी यूनिकोड वर्ण को उसके संख्यात्मक कोड बिंदु द्वारा संदर्भित किया जा सकता है, कुछ एचटीएमएल दस्तावेज़ लेखक इसके बजाय इन नामित संस्थाओं का उपयोग करना पसंद करते हैं, जहां संभव हो, क्योंकि वे कम गूढ़ हैं और शुरुआती ब्राउज़रों द्वारा बेहतर समर्थित थे।
इकाई संदर्भों के उपयोग के माध्यम से चरित्र संस्थाओं को एक एचटीएमएल दस्तावेज़ में शामिल किया जा सकता है, जो '&
EntityName;
, जहां EntityName इकाई का नाम है। उदाहरण के लिए, —
, बहुत कुछ एक सा —
या —
, प्रतिनिधित्व करता है U+2014: em डैश वर्ण — भले ही प्रयुक्त वर्ण एन्कोडिंग में वह वर्ण न हो।
पूरी सूची के लिए, देखें: XML और एचटीएमएल वर्ण इकाई संदर्भों की सूची।
वर्ण एन्कोडिंग निर्धारण
एचटीएमएल को सही ढंग से संसाधित करने के लिए, एक वेब ब्राउज़र को यह पता लगाना चाहिए कि कौन से यूनिकोड वर्ण एचटीएमएल दस्तावेज़ के एन्कोडेड रूप से दर्शाए गए हैं। ऐसा करने के लिए, वेब ब्राउज़र को पता होना चाहिए कि किस एन्कोडिंग का उपयोग किया गया था।
एन्कोडिंग जानकारी
जब कोई दस्तावेज़ MIME संदेश या परिवहन के माध्यम से प्रेषित होता है जो MIME सामग्री प्रकार जैसे HTTP प्रतिक्रिया का उपयोग करता है, तो संदेश सामग्री-प्रकार शीर्षलेख के माध्यम से एन्कोडिंग को संकेत दे सकता है, जैसे Content-Type: text/एचटीएमएल; charset=UTF-8
. एन्कोडिंग घोषित करने के अन्य बाहरी साधनों की अनुमति है लेकिन शायद ही कभी इस्तेमाल किया जाता है। यदि दस्तावेज़ यूनिकोड एन्कोडिंग की तुलना का उपयोग करता है, तो एन्कोडिंग जानकारी बाइट ऑर्डर मार्क (बीओएम) के रूप में भी मौजूद हो सकती है। अंत में, एन्कोडिंग को एचटीएमएल सिंटैक्स के माध्यम से घोषित किया जा सकता है। के लिए text/एचटीएमएल
क्रमांकन तब तक, जब तक पृष्ठ ASCII के विस्तार में एन्कोड किया गया हो (जैसे UTF-8, और इस प्रकार, यदि पृष्ठ UTF-16 का उपयोग नहीं कर रहा है), a meta
तत्व, जैसे <meta http-equiv="content-type" content="text/एचटीएमएल; charset=UTF-8">
या (एचटीएमएल5 से शुरू) <meta charset="UTF-8">
इस्तेमाल किया जा सकता है। एक्सएमएल के रूप में क्रमबद्ध एचटीएमएल पृष्ठों के लिए, घोषणा विकल्प या तो एन्कोडिंग डिफ़ॉल्ट (जो एक्सएमएल दस्तावेजों के लिए यूटीएफ -8 है) पर भरोसा करना है, या एक्सएमएल एन्कोडिंग घोषणा का उपयोग करना है। XML के रूप में प्रस्तुत एचटीएमएल में मेटा विशेषता कोई भूमिका नहीं निभाती है।
एन्कोडिंग डिफ़ॉल्ट
एक एन्कोडिंग डिफ़ॉल्ट तब लागू होता है जब कोई बाहरी या आंतरिक एन्कोडिंग घोषणा नहीं होती है और कोई बाइट ऑर्डर चिह्न भी नहीं होता है। जबकि XML के रूप में प्रस्तुत किए गए एचटीएमएल पृष्ठों के लिए एन्कोडिंग डिफ़ॉल्ट UTF-8 होना आवश्यक है, एक नियमित वेब पेज के लिए एन्कोडिंग डिफ़ॉल्ट (अर्थात: एचटीएमएल पृष्ठों के लिए क्रमबद्ध रूप से text/एचटीएमएल
) ब्राउज़र के स्थानीयकरण के आधार पर भिन्न होता है। मुख्य रूप से पश्चिमी यूरोपीय भाषाओं के लिए स्थापित सिस्टम के लिए, यह आमतौर पर ISO 8859-1#Windows-1252|Windows-1252 होगा। सिरिलिक वर्णमाला स्थानों के लिए, डिफ़ॉल्ट आमतौर पर Windows-1251 है। किसी ऐसे स्थान के ब्राउज़र के लिए जहां लीगेसी मल्टी-बाइट कैरेक्टर एनकोडिंग प्रचलित हैं, ऑटो-डिटेक्शन के कुछ रूप लागू होने की संभावना है।
एन्कोडिंग रुझान
प्रोग्रामिंग भाषाओं और ऑपरेटिंग सिस्टम में 8-बिट पाठ प्रस्तुतियों की विरासत और एन्कोडिंग की बारीकियों को समझने की आवश्यकता के साथ बोझिल उपयोगकर्ताओं से बचने की इच्छा के कारण, एचटीएमएल लेखकों द्वारा उपयोग किए जाने वाले कई टेक्स्ट संपादक एन्कोडिंग के विकल्प की पेशकश करने में असमर्थ या अनिच्छुक हैं। फ़ाइलों को डिस्क में सहेजते समय और अक्सर बहुत सीमित सीमा से परे वर्णों के इनपुट की अनुमति भी नहीं देते हैं। नतीजतन, कई एचटीएमएल लेखक एन्कोडिंग मुद्दों से अनभिज्ञ हैं और उन्हें इस बात का कोई अंदाजा नहीं है कि उनके दस्तावेज़ वास्तव में किस एन्कोडिंग का उपयोग करते हैं। गलतफहमी, जैसे विश्वास है कि एन्कोडिंग घोषणा वास्तविक एन्कोडिंग में परिवर्तन को प्रभावित करती है (जबकि यह वास्तव में केवल एक लेबल है जो गलत हो सकता है), इस संपादक के रवैये का भी एक कारण है। उसी दिशा में योगदान देने वाला एक अन्य कारक, UTF-8 का आगमन है – जो अन्य एन्कोडिंग की आवश्यकता को बहुत कम कर देता है, और इस प्रकार आधुनिक संपादक एचटीएमएल5 विनिर्देश द्वारा अनुशंसित डिफ़ॉल्ट रूप से जाते हैं,[1] यूटीएफ -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 एन्कोडिंग।
एन्कोडिंग ओवरराइडिंग
कई एचटीएमएल दस्तावेज़ों को गलत एन्कोडिंग जानकारी, या कोई एन्कोडिंग जानकारी बिल्कुल नहीं दी जाती है। ऐसे मामलों में एन्कोडिंग निर्धारित करने के लिए, कई ब्राउज़र उपयोगकर्ता को किसी सूची से मैन्युअल रूप से एन्कोडिंग नाम चुनने की अनुमति देते हैं। वे एक एन्कोडिंग ऑटो-डिटेक्शन एल्गोरिदम भी नियोजित कर सकते हैं जो कंसर्ट में या के साथ काम करता है – बीओएम के मामले में और एचटीएमएल के मामले में एक्सएमएल के रूप में कार्य करता है – मैनुअल ओवरराइड के खिलाफ।
एचटीएमएल दस्तावेज़ों के लिए जो हैं text/एचटीएमएल
क्रमबद्ध, मैनुअल ओवरराइड सभी दस्तावेजों पर लागू हो सकता है, या केवल उन पर लागू हो सकता है जिनके लिए घोषणाओं और/या बाइट पैटर्न को देखकर एन्कोडिंग का पता नहीं लगाया जा सकता है। यह तथ्य कि मैनुअल ओवरराइड मौजूद है और व्यापक रूप से उपयोग किया जाता है, वेब पर सटीक एन्कोडिंग घोषणाओं को अपनाने में बाधा डालता है; इसलिए समस्या के बने रहने की संभावना है। लेकिन ध्यान दें कि इंटरनेट एक्सप्लोरर, क्रोम और सफारी – एक्सएमएल और दोनों के लिए text/एचटीएमएल
क्रमबद्धता – पृष्ठ में BOM शामिल होने पर एन्कोडिंग को ओवरराइड करने की अनुमति न दें।[2]
पसंदीदा XML लेबल के साथ क्रमबद्ध एचटीएमएल दस्तावेज़ों के लिए – application/xएचटीएमएल+xml
, मैनुअल एन्कोडिंग ओवरराइड की अनुमति नहीं है। ऐसे एक्सएमएल दस्तावेज़ के एन्कोडिंग को ओवरराइड करने का अर्थ होगा कि दस्तावेज़ एक्सएमएल होना बंद हो गया है, क्योंकि यह पता लगाने योग्य त्रुटियों के साथ एन्कोडिंग घोषणा के लिए एक्सएमएल दस्तावेज़ों के लिए घातक त्रुटि है। वर्तमान में, फ़ायरफ़ॉक्स जैसे गेको ब्राउज़र इस नियम का पालन करते हैं, जबकि अन्य सामान्य ब्राउज़र जो एचटीएमएल को XML के रूप में समर्थन करते हैं, जैसे कि वेबकिट ब्राउज़र (क्रोम / सफारी) [3] एक्सएचटीएमएल दस्तावेज़ों के एन्कोडिंग को मैन्युअल रूप से ओवरराइड करने की अनुमति दें।
वेब ब्राउज़र समर्थन
कई ब्राउज़र पूरे यूनिकोड प्रदर्शनों की सूची के केवल एक छोटे उपसमुच्चय को प्रदर्शित करने में सक्षम हैं। यहां बताया गया है कि आपका ब्राउज़र विभिन्न यूनिकोड कोड बिंदुओं को कैसे प्रदर्शित करता है:
Character | एचटीएमएल char ref | Unicode name | What your browser displays |
---|---|---|---|
U+0041 | A or A
|
Latin capital letter A | A |
U+00DF | ß or ß
|
Latin small letter Sharp S | ß |
U+00FE | þ or þ
|
Latin small letter Thorn | þ |
U+0394 | Δ or Δ
|
Greek capital letter Delta | Δ |
U+017D | Ž or Ž
|
Latin capital letter Z with háček | Ž |
U+0419 | Й or Й
|
Cyrillic capital letter Short I | Й |
U+05E7 | ק or ק
|
Hebrew letter Qof | ק |
U+0645 | م or م
|
Arabic letter Meem | م |
U+0E57 | ๗ or ๗
|
Thai digit 7 | ๗ |
U+1250 | ቐ or ቐ
|
Ge'ez syllable Qha | ቐ |
U+3042 | あ or あ
|
Hiragana letter A (Japanese) | あ |
U+53F6 | 叶 or 叶
|
CJK Unified Ideograph-53F6 (Simplified Chinese "Leaf") | 叶 |
U+8449 | 葉 or 葉
|
CJK Unified Ideograph-8449 (Traditional Chinese "Leaf") | 葉 |
U+B5AB | 떫 or 떫
|
Hangul syllable Tteolp (Korean "Ssangtikeut Eo Rieulbieup") | 떫 |
U+16A0 | ᚠ or ᚠ
|
Runic letter Fehu | ᚠ |
U+0D37 | ഷ or ഷ
|
Malayalam letter ഷ (ṣha) | ഷ |
U+1F602 | 😂 or 😂
|
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 में UTF-8 यूनिकोड एन्कोडिंग वेब पेजों पर सबसे अधिक इस्तेमाल किया जाने वाला एन्कोडिंग बन गया, ASCII (US) और ISO/IEC 8859-1|8859-1/Windows-1252 दोनों को पीछे छोड़ दिया ( पश्चिमी यूरोपियन)।[4]
यह भी देखें
- मेटा: सहायता: विशेष वर्ण
- एचटीएमएल में कैरेक्टर एनकोडिंग
- वर्णसेट का पता लगाना
- wikibooks: यूनिकोड/चरित्र संदर्भ|यूनिकोड चरित्र संदर्भ (wikibooks)
संदर्भ
- ↑ 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]
- ↑ "12897 – In some parsers, UTF-8 BOM trumps the HTTP charset attribute (Encoding sniffing algorithm)". www.w3.org. Retrieved 2023-03-09.
- ↑ "66189 – XML parser doesn't emit FATAL ERROR for all, detectable encoding errors". bugs.webkit.org. Retrieved 2023-03-09.
- ↑ Mark Davis: Moving to Unicode 5.1 Official Google blog, 5 May 2008
बाहरी संबंध
- Unicode in XML and other Markup Languages - a W3C & Unicode Consortium joint publication that describes issues and provides guidelines relating to Unicode in markup languages
- Latin-1, "Special", and Mathematical, Greek and Symbolic named character entity definitions for एचटीएमएल 4.01
- UnicodeMap.org - Browse Unicode characters, ranges, and other information
- SIL's freeware fonts, editors and documentation
- Alan Wood’s Unicode Resources - Unicode fonts and information.
- http://www.phon.ucl.ac.uk/home/wells/ipa-unicode.htm The International Phonetic Alphabet in Unicode
- http://www.alanwood.net/unicode/cjk_compatibility_ideographs.एचटीएमएल CJK Compatibility Ideographs
- http://www.unicode.org/charts/ Unicode character charts; hexadecimal numbers only; PDF files showing all characters independent of browser capabilities
- Table of Unicode characters from 1 to 65535 Archived 2007-11-03 at the Wayback Machine - shows how they look in one's browser
- Web tool that converts "special" characters (such as Chinese characters) to Unicode numeric character references
- Multi-lingual web pages and Unicode - how to fix display problems
- w3.org via web.archive.org - Original एचटीएमएल5 Citation Reference saved via Wayback Machine