इस्तेमाल करने का तरीका
- टेक्स्ट को HTML के लिए सुरक्षित बनाने हेतु Encode चुनें, या एंटिटी को वापस वर्णों में बदलने के लिए Decode चुनें।
- एन्कोड करते समय चुनें कि उच्चारण वाले अक्षर और प्रतीक वैसे ही रहें या एंटिटी में बदलें।
- अपना टेक्स्ट टाइप या पेस्ट करें; नतीजा तुरंत अपडेट हो जाएगा।
- नतीजे को कॉपी करें, या “इनपुट के रूप में आउटपुट इस्तेमाल करें” चुनकर जाँचें कि वह वापस मूल टेक्स्ट में डिकोड होता है या नहीं।
यह कैसे काम करता है
HTML में कुछ वर्णों के विशेष अर्थ होते हैं: < टैग शुरू करता है, & एंटिटी शुरू करता है और " या ' किसी एट्रिब्यूट का मान समाप्त करते हैं। इन्हें टेक्स्ट के रूप में दिखाने के लिए इन्हें कैरेक्टर रेफ़रेंस के रूप में लिखना ज़रूरी है: < के लिए <, > के लिए >, & के लिए &, " के लिए " और ' के लिए '। अपॉस्ट्रॉफ़ के लिए संख्यात्मक रूप इस्तेमाल होता है, क्योंकि ' HTML 4 में परिभाषित नहीं है।
अन्य सभी वर्ण, जिनमें उच्चारण-चिह्न वाले अक्षर, चीनी टेक्स्ट और इमोजी शामिल हैं, सीधे लिखे जा सकते हैं, बशर्ते पेज UTF-8 में सेव और सर्व किया गया हो, जो आधुनिक वेबसाइटों के लिए डिफ़ॉल्ट है। इन्हें एंटिटी में बदलना केवल उन सिस्टम के लिए ज़रूरी है जो UTF-8 के अनुकूल नहीं हैं, जैसे कुछ पुराने ईमेल टेम्पलेट या डेटाबेस। इसके बाद आप वहाँ उपलब्ध सामान्य नाम वाली एंटिटी चुन सकते हैं, जैसे é (बाकी सभी के लिए संख्यात्मक विकल्प के साथ), या हर वर्ण के लिए é जैसे संख्यात्मक रेफ़रेंस चुन सकते हैं।
डिकोडिंग के लिए ब्राउज़र का HTML पार्सर इस्तेमाल नहीं होता। इसके बजाय, HTML 4.01 की सभी 252 नाम वाली एंटिटी, ' और लगभग 30 आम HTML5 नामों वाली बिल्ट-इन तालिका, साथ ही दशमलव और हेक्साडेसिमल रेफ़रेंस इस्तेमाल किए जाते हैं। संख्यात्मक रेफ़रेंस HTML5 के नियमों का पालन करते हैं: �, सरोगेट मान और U+10FFFF से बड़े मान रिप्लेसमेंट कैरेक्टर � में बदल जाते हैं, और 128–159 के मान Windows-1252 के अनुसार पढ़े जाते हैं, इसलिए – एक en dash बन जाता है। कुछ पुराने नाम, जैसे & और ©, बिना अंतिम सेमीकोलन के भी स्वीकार किए जाते हैं, जैसा ब्राउज़र करते हैं। HTML5 में 2,000 से अधिक नाम परिभाषित हैं; तालिका से बाहर के दुर्लभ नाम जस के तस छोड़े जाते हैं और सूचीबद्ध किए जाते हैं।
HTML में डालने से पहले टेक्स्ट को एस्केप करना cross-site scripting (XSS) से बचाव का एक अहम तरीका है, लेकिन यह केवल एलिमेंट के कंटेंट और उद्धरण-चिह्नों में बंद एट्रिब्यूट मानों के लिए सही है। <script> ब्लॉक, स्टाइल एट्रिब्यूट या URL में रखे टेक्स्ट के लिए अलग एस्केपिंग की ज़रूरत होती है।
उदाहरण
वेब पेज पर कोड दिखाना
किसी ब्लॉग पोस्ट में <div class="box"> को टेक्स्ट के रूप में दिखाने के लिए, इसे <div class="box"> में एन्कोड करें। ब्राउज़र मूल टैग दिखाएगा, एलिमेंट नहीं बनाएगा।
पुराने ईमेल टेम्पलेट के लिए टेक्स्ट तैयार करना
“जहाँ उपलब्ध हों, वहाँ नाम वाली एंटिटी इस्तेमाल करें” विकल्प के साथ “Café – 5 €” बदलकर Café – 5 € हो जाता है। इससे यह सही दिखता है, भले ही ईमेल किसी गैर-UTF-8 कैरेक्टर सेट में भेजा गया हो।
स्क्रैप किए या एक्सपोर्ट किए गए टेक्स्ट को साफ़ करना
एक CMS एक्सपोर्ट में Fish & Chips – £9 है। डिकोड करने पर Fish & Chips – £9 मिलता है, जिसे स्प्रेडशीट में पेस्ट किया जा सकता है।
अक्सर पूछे जाने वाले सवाल
HTML में किन वर्णों को एस्केप करना ज़रूरी है?
एलिमेंट के कंटेंट में & और < को एस्केप करना ज़रूरी है ( > को एस्केप करना भी बेहतर है)। एट्रिब्यूट वैल्यू में, उस वैल्यू को घेरने वाले उद्धरण चिह्न को भी एस्केप करें। हर जगह सभी पाँच वर्णों (& < > " ') को एस्केप करना आसान और सुरक्षित नियम है, जिसे यह टूल अपनाता है।
नामित और संख्यात्मक एंटिटी में क्या अंतर है?
© जैसी नामित एंटिटी पढ़ने में आसान होती हैं, लेकिन वे सीमित वर्णों के लिए ही उपलब्ध हैं। © (दशमलव) या © (हेक्साडेसिमल) जैसे संख्यात्मक रेफ़रेंस हर Unicode वर्ण के लिए काम करते हैं, इमोजी के लिए भी।
डिकोड करने पर स्पेस जैसा क्यों दिखता है?
नॉन-ब्रेकिंग स्पेस (U+00A0) है। यह सामान्य स्पेस जैसा दिखता है, लेकिन लाइन को टूटने से रोकता है और HTML इसे समेटकर एक स्पेस नहीं बनाता। यह सामान्य स्पेस से अलग वर्ण है, जो टेक्स्ट की तुलना या खोज करते समय मायने रखता है।
क्या é जैसे उच्चारण वाले अक्षरों को एन्कोड करना ज़रूरी है?
अगर आपका पेज UTF-8 (<meta charset="utf-8">) इस्तेमाल करता है, तो इसकी ज़रूरत नहीं है। लगभग सभी आधुनिक पेज ऐसा करते हैं। डिफ़ॉल्ट सेटिंग रहने दें; इससे सिर्फ़ पाँच विशेष वर्ण एस्केप होंगे।
क्या XSS रोकने के लिए एन्कोडिंग काफ़ी है?
HTML एलिमेंट के कंटेंट या उद्धरण चिह्नों में दी गई एट्रिब्यूट वैल्यू में डाले गए अविश्वसनीय टेक्स्ट के लिए यह काफ़ी है। JavaScript कोड, CSS, बिना उद्धरण वाले एट्रिब्यूट या href="javascript:…" जैसे URL के लिए यह काफ़ी नहीं है; इनके लिए संदर्भ के अनुसार अलग तरीके से संभालना ज़रूरी है।
गोपनीयता
एन्कोडिंग और डिकोडिंग आपके ब्राउज़र में सामान्य स्ट्रिंग ऑपरेशन से होती है; आपका टेक्स्ट कभी HTML के रूप में रेंडर, अपलोड या संग्रहित नहीं किया जाता और न ही एनालिटिक्स में शामिल होता है।