संख्यात्मक वर्ण संदर्भ

एक संख्यात्मक वर्ण संदर्भ (NCR) एक सामान्य मार्कअप (कंप्यूटर प्रोग्रामिंग) निर्माण है जिसका उपयोग SGML और SGML-व्युत्पन्न मार्कअप भाषाओं जैसे HTML और XML में किया जाता है। इसमें वर्णों (कंप्यूटिंग) का एक छोटा अनुक्रम होता है, जो बदले में, एकल वर्ण का प्रतिनिधित्व करता है। एसजीएमएल, एक्सएमएल और [[एचटीएमएल 4]] के बाद से, यूनिकोड के यूनिवर्सल कैरेक्टर सेट (यूसीएस) के कोड बिंदुओं का उपयोग किया जाता है। एनसीआर का उपयोग आम तौर पर उन वर्णों का प्रतिनिधित्व करने के लिए किया जाता है जो किसी विशेष दस्तावेज़ में सादा पाठ#एनकोडिंग नहीं हैं (उदाहरण के लिए, क्योंकि वे अंतरराष्ट्रीय वर्ण हैं जो उपयोग किए जा रहे 8-बिट अक्षरों को सांकेतिक अक्षरों में बदलना  में फिट नहीं होते हैं, या क्योंकि उनका विशेष वाक्यविन्यास अर्थ होता है) भाषा में) जब दस्तावेज़ की व्याख्या एक मार्कअप-जागरूक पाठक द्वारा की जाती है, तो प्रत्येक एनसीआर के साथ ऐसा व्यवहार किया जाता है मानो यह वह चरित्र हो जिसका वह प्रतिनिधित्व करता है।

उदाहरण
एसजीएमएल, एचटीएमएल और एक्सएमएल में, ग्रीक कैपिटल लेटर सिग्मा के लिए निम्नलिखित सभी वैध संख्यात्मक चरित्र संदर्भ हैं एसजीएमएल, एचटीएमएल और एक्सएमएल में, लैटिन कैपिटल अक्षर एई के लिए निम्नलिखित सभी वैध संख्यात्मक चरित्र संदर्भ हैं एसजीएमएल, एचटीएमएल और एक्सएमएल में, लैटिन छोटे अक्षर शार्प एस के लिए निम्नलिखित सभी वैध संख्यात्मक चरित्र संदर्भ हैं मुद्रण योग्य ASCII वर्णों के लिए संख्यात्मक वर्ण संदर्भों की सूची:

चर्चा
मार्कअप भाषाओं को आम तौर पर यूसीएस या यूनिकोड वर्णों के संदर्भ में परिभाषित किया जाता है। अर्थात्, एक दस्तावेज़ में, अमूर्तता के सबसे बुनियादी स्तर पर, वर्णों का एक क्रम होता है, जो अमूर्त इकाइयाँ होती हैं जो किसी भी वर्ण एन्कोडिंग से स्वतंत्र रूप से मौजूद होती हैं।

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

हालाँकि, कभी-कभी, सुविधा के कारणों से या तकनीकी सीमाओं के कारण, दस्तावेज़ों को ऐसे एन्कोडिंग के साथ एन्कोड किया जाता है जो कुछ वर्णों का सीधे प्रतिनिधित्व नहीं कर सकता है। उदाहरण के लिए, ISO 8859 पर आधारित व्यापक रूप से उपयोग किए जाने वाले एन्कोडिंग, अधिकतम 256 अद्वितीय वर्णों को एक 8-बिट बाइट के रूप में प्रदर्शित कर सकते हैं।

व्यवहार में, दस्तावेज़ों को शायद ही कभी आंतरिक रूप से एक से अधिक एन्कोडिंग का उपयोग करने की अनुमति दी जाती है, इसलिए दस्तावेज़ लेखकों को एन्कोडेबल के संदर्भ में अनएन्कोडेबल वर्णों को व्यक्त करने का साधन प्रदान करने का दायित्व आमतौर पर मार्कअप भाषा पर होता है। यह आम तौर पर किसी प्रकार के एस्केप कैरेक्टर के माध्यम से किया जाता है| भागने का तंत्र.

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

वर्ण संदर्भ जो संदर्भित वर्ण के यूसीएस या यूनिकोड कोड बिंदु पर आधारित होते हैं, संख्यात्मक वर्ण संदर्भ कहलाते हैं। HTML 4 और XHTML तथा XML के सभी संस्करणों में, कोड बिंदु को दशमलव (आधार 10) संख्या या हेक्साडेसिमल (आधार 16) संख्या के रूप में व्यक्त किया जा सकता है। वाक्यविन्यास इस प्रकार है:

वर्ण U+0026 (एम्परसेंड), उसके बाद वर्ण U+0023 (संख्या चिह्न), उसके बाद निम्नलिखित विकल्पों में से एक:


 * एक या अधिक दशमलव अंक शून्य (U+0030) से नौ (U+0039); या
 * वर्ण U+0078 (x) जिसके बाद एक या अधिक हेक्साडेसिमल अंक होते हैं, जो शून्य (U+0030) से नौ (U+0039), लैटिन बड़े अक्षर A (U+0041) से F (U+0046) तक होते हैं, और लैटिन लघु अक्षर a (U+0061) से f (U+0066);

सभी के बाद अक्षर U+003B (अर्धविराम) आता है। HTML के पुराने संस्करणों में हेक्साडेसिमल सिंटैक्स की अनुमति नहीं थी।

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

एक अन्य प्रकार का वर्ण संदर्भ है जिसे वर्ण इकाई संदर्भ कहा जाता है, जो किसी वर्ण को संख्या के बजाय नाम से संदर्भित करने की अनुमति देता है। (किसी चरित्र का नामकरण एक चरित्र SGML इकाई बनाता है।) HTML कुछ वर्ण संस्थाओं को परिभाषित करता है, लेकिन कई को नहीं; अन्य सभी वर्णों को केवल प्रत्यक्ष एन्कोडिंग या एनसीआर का उपयोग करके शामिल किया जा सकता है।

प्रतिबंध
आईएसओ 10646 द्वारा परिभाषित यूनिवर्सल कैरेक्टर सेट एसजीएमएल, एचटीएमएल 4 का दस्तावेज़ कैरेक्टर सेट है, इसलिए डिफ़ॉल्ट रूप से, ऐसे दस्तावेज़ में कोई भी चरित्र, और ऐसे दस्तावेज़ में संदर्भित कोई भी चरित्र, यूसीएस में होना चाहिए।

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

अन्य कारणों से भी प्रतिबंध लागू हो सकते हैं. उदाहरण के लिए, HTML 4 में,, जो एक गैर-मुद्रण प्रपत्र फ़ीड नियंत्रण वर्ण का संदर्भ है, की अनुमति है क्योंकि एक प्रपत्र फ़ीड वर्ण की अनुमति है। लेकिन XML में, फॉर्म फ़ीड कैरेक्टर का उपयोग नहीं किया जा सकता, संदर्भ द्वारा भी नहीं।  एक अन्य उदाहरण के रूप में,  , जो किसी अन्य नियंत्रण वर्ण का संदर्भ है, इसे HTML या XML में उपयोग या संदर्भित करने की अनुमति नहीं है, लेकिन जब HTML में उपयोग किया जाता है, तो इसे आमतौर पर वेब ब्राउज़र द्वारा त्रुटि के रूप में चिह्नित नहीं किया जाता है - जिनमें से कुछ इसे संदर्भ के रूप में व्याख्या करते हैं संगतता कारणों से Windows-1252 एन्कोडिंग में कोड मान 128 द्वारा दर्शाए गए वर्ण के लिए। इस वर्ण को, €, के रूप में प्रस्तुत किया जाना है   एक मानक-अनुपालक HTML कोड में। एक और उदाहरण के रूप में, 6 अक्टूबर 2000 को XML 1.0 द्वितीय संस्करण के प्रकाशन से पहले, XML 1.0 ISO 10646 के पुराने संस्करण पर आधारित था और वर्ण डेटा को छोड़कर, U+FFFD से ऊपर वर्णों का उपयोग करना प्रतिबंधित था, इस प्रकार एक संदर्भ बना   (यू+10000) अवैध। XML 1.1 और XML 1.0 के नए संस्करणों में, ऐसे संदर्भ की अनुमति है, क्योंकि उपलब्ध वर्ण भंडार को स्पष्ट रूप से विस्तारित किया गया था।

मार्कअप भाषाएँ इस पर भी प्रतिबंध लगाती हैं कि चरित्र संदर्भ कहाँ हो सकते हैं।

संगतता समस्याएँ
एसजीएमएल और एचटीएमएल के शुरुआती संस्करणों में, संख्यात्मक चरित्र संदर्भों की व्याख्या यूनिकोड के बजाय दस्तावेज़ चरित्र एन्कोडिंग के संबंध में की गई थी। लैटिन-लिपि दस्तावेज़ों के लिए, उन दस्तावेज़ों में x80 और x9F के बीच वर्णों के संख्यात्मक वर्ण संदर्भ यूनिकोड के विरुद्ध सही नहीं होंगे, और उन्हें दोबारा कोडित किया जाना चाहिए। HTML 4 से पहले HTML मानक केवल पश्चिमी लैटिन लिपि दस्तावेजों का समर्थन करते थे: #7F से ऊपर के चरित्र संदर्भों का उपचार अनुप्रयोगों और राष्ट्रीय सम्मेलनों के बीच भिन्न हो सकता है।

उदाहरण के लिए, जैसा कि ऊपर बताया गया है, यूरो चिह्न € के लिए सही संख्यात्मक वर्ण संदर्भ  यूनिकोड का उपयोग करते समय दशमलव होता है   और हेक्साडेसिमल. हालाँकि, यदि HTML के अप्रचलित कार्यान्वयन का समर्थन करने वाले टूल का उपयोग किया जा रहा है, तो संदर्भ   (सीपी-1252 कोड पृष्ठ में यूरो चिह्न) या   (आईएसओ/आईईसी 8859-15 में यूरो चिह्न) काम कर सकता है।

एक अन्य उदाहरण के रूप में, यदि कुछ पाठ मूल रूप से मैक्रोमन वर्ण सेट का उपयोग करके बनाया गया था, तो उद्धरण चिह्न ग्लिफ़ “ को कोड बिंदु xD2 के साथ दर्शाया जाएगा। यह यूटीएफ-8, आईएसओ 8859-1, या सीपी-1252 के रूप में एन्कोड किए गए दस्तावेज़ की अपेक्षा करने वाले सिस्टम में ठीक से प्रदर्शित नहीं होगा, जहां यह कोड बिंदु अक्षर Ò द्वारा कब्जा कर लिया गया है। के लिए सही संख्यात्मक वर्ण संदर्भ “ HTML 4 में और नया है, क्योंकि Unicode#Upluslink|U+201C इसका UCS कोड है। कुछ प्रणालियों में, XML और HTML वर्ण इकाई संदर्भों की सूची   भी उपलब्ध हो सकता है.

यह भी देखें

 * XML और HTML वर्ण इकाई संदर्भों की सूची