HTML में <, > और & वर्णों का विशेष अर्थ होता है और इन्हें एस्केप करना ज़रूरी है, लेकिन देवनागरी लिपि में लिखी गई हिन्दी के लिए एंटिटी का मामला अलग तरह से पेचीदा है — यहाँ अक्षर अकेले नहीं, बल्कि जोड़-तोड़ वाले चिह्नों (मात्राओं) के साथ मिलकर बनते हैं।
मात्राएँ: एक अक्षर, कई यूनिकोड कोड-पॉइंट
देवनागरी में "कि" जैसा एक अक्षर असल में दो यूनिकोड कोड-पॉइंट से बनता है — व्यंजन "क" और मात्रा चिह्न "ि"। अगर कोई टूल गलती से टेक्स्ट को बीच से काटकर आधे को न्यूमेरिक एंटिटी में बदल दे, तो व्यंजन और मात्रा अलग हो सकते हैं, जिससे स्क्रीन पर अक्षर टूटा-फूटा या गलत क्रम में दिखता है। इसी वजह से देवनागरी टेक्स्ट को एंटिटी में बदलते समय पूरे कोड-पॉइंट क्लस्टर को साथ रखना ज़रूरी है, अलग-अलग बाइट को नहीं।
नामित एंटिटी की कमी, संख्यात्मक एंटिटी की भरमार
अंग्रेज़ी अक्षरों या "©" जैसे प्रतीकों के उलट, देवनागरी के किसी भी वर्ण के लिए कोई नामित HTML एंटिटी मौजूद नहीं है — "क" को क जैसे संख्यात्मक कोड से ही लिखा जा सकता है। इसलिए हिन्दी टेक्स्ट को एंटिटी में बदलने वाला कोई भी टूल पूरी तरह संख्यात्मक (या हेक्साडेसिमल) एंटिटी पर निर्भर करता है, नामित एंटिटी की सुविधा यहाँ काम नहीं आती।
एस्केप करने के लिए न्यूनतम वर्ण सेट
<→<— ताकि कोई टैग शुरू न हो।>→>— किसी टैग के बाद टेक्स्ट को सही तरीके से बंद करने के लिए।&→&— ताकि & को किसी अन्य एंटिटी की शुरुआत न समझा जाए।"और'→",'— उद्धरण चिह्नों वाले एट्रिब्यूट के अंदर अनिवार्य।
पुराने SMS और फ़ीड सिस्टम की विरासत
जब कोई पुराना सिस्टम UTF-8 को पूरी तरह सपोर्ट नहीं करता — जैसे कुछ लीगेसी SMS गेटवे या पुराने डेटा फ़ीड — तो देवनागरी टेक्स्ट को संख्यात्मक एंटिटी की श्रृंखला में बदलना अब भी एक व्यावहारिक तरीका है, ताकि टेक्स्ट "क्???" जैसे टूटे प्रतीकों में बदलने के बजाय हर जगह सही तरीके से दिखे।
XSS से संबंध
अधिकतर XSS कमज़ोरियाँ ठीक इसलिए पैदा होती हैं क्योंकि उपयोगकर्ता द्वारा दर्ज टेक्स्ट को बिना एस्केप किए HTML में डाल दिया जाता है। "<script>...</script>" को एंटिटी में बदले बिना दिखाने पर ब्राउज़र इसे कोड के रूप में चलाएगा। डायनामिक कंटेंट दिखाते समय एस्केपिंग एक बुनियादी — पर एकमात्र नहीं — सुरक्षा उपाय है।
कॉन्टेक्स्ट मायने रखता है: टेक्स्ट बनाम एट्रिब्यूट
टैग के बीच के टेक्स्ट के लिए <, > और & को एस्केप करना काफ़ी है, लेकिन उद्धरण चिह्नों वाले एट्रिब्यूट के अंदर उसी उद्धरण चिह्न को भी एस्केप करना ज़रूरी है। अगर एट्रिब्यूट दोहरे उद्धरण चिह्नों में बंद है और मान में बिना एस्केप किया दोहरा उद्धरण चिह्न आ जाए, तो मार्कअप उम्मीद से पहले "टूट" जाएगा।