HTML संस्थाओं का उपयोग कब करना चाहिए?


115

यह कुछ समय से मुझे भ्रमित कर रहा है। वेब विकास में डी-फैक्टो मानक के रूप में यूटीएफ -8 के आगमन के साथ मुझे यकीन नहीं है कि मैं किन स्थितियों में एचटीएमएल संस्थाओं का उपयोग करने वाला हूं और जिनके लिए मुझे यूटीएफ -8 के चरित्र का उपयोग करना चाहिए। उदाहरण के लिए,

  • एम डैश (- &emdash;)
  • एम्परसैंड (& &)
  • 3/4 अंश (¾ ¾)

कृपया इस मुद्दे पर प्रकाश डालें। इसकी सराहना की जाएगी।


एक ओर ध्यान दें, PHP में htmlentities () क्या करेगा?
जो फिलिप्स

उत्तर और टिप्पणियों को पढ़ना मुझे लगता है कि अभी तक एक या दूसरे के पक्ष में एक सार्वभौमिक नियम नहीं है, और जवाब अभी भी यह निर्भर करता है
माजिद फौलादपुर

जवाबों:


76

यदि आपके संपादक ने यूनिकोड का समर्थन किया है, तो आपको आम तौर पर HTML वर्ण संस्थाओं का उपयोग करने की आवश्यकता नहीं है। प्रविष्टियाँ तब उपयोगी हो सकती हैं जब:

  • आपका कीबोर्ड उस चरित्र का समर्थन नहीं करता है जिसे आपको टाइप करने की आवश्यकता है। उदाहरण के लिए, कई कीबोर्ड में एम-डैश या कॉपीराइट प्रतीक नहीं होता है।
  • आपका संपादक यूनिकोड का समर्थन नहीं करता है (कुछ साल पहले बहुत आम है, लेकिन शायद आज नहीं)।
  • आप स्रोत में स्पष्ट करना चाहते हैं कि क्या हो रहा है। उदाहरण के लिए,  कोड संबंधित सफेद स्थान वर्ण की तुलना में स्पष्ट है।
  • आपको HTML विशेष वर्णों से बचने की आवश्यकता है <, जैसे &, या "

1
बहुत मददगार। धन्यवाद। मैं असामान्य पात्रों को प्राप्त करने के लिए एक उपयोगी कार्यक्रम का उपयोग करता हूं। इसे पोचर कहा जाता है और इसे एर्गोनिस द्वारा बनाया गया है, लेकिन यह केवल ओएस एक्स के लिए है।
19

3
साइड नोट: विकिपीडिया अभी भी &nbsp;वास्तविक व्हाट्सएप चरित्र के बजाय अनिवार्य है , क्योंकि फ़ायरफ़ॉक्स U + 00A0 को U + 0020 में रूपों में परिवर्तित करता है। तो उस स्थिति में इकाई का उपयोग करना यह सुनिश्चित करने का एकमात्र तरीका है कि हर बार फ़ायरफ़ॉक्स उपयोगकर्ता द्वारा संपादित किए जाने पर स्रोत गड़बड़ न हो।
जॉय

2
एक अच्छा सारांश, लेकिन अंतिम बिंदु के बारे में, यह है <कि अक्सर भागने की आवश्यकता होती है, कभी नहीं >(और "केवल शायद ही कभी अंदर के मूल्यों से बचने की आवश्यकता होती है)।
जुक्का के। कोर्पेला

रखने के लिए एक और कारण & nbsp; ऐसा है कि आप एक HTML पृष्ठ पर कई रिक्त स्थान प्रदर्शित कर सकते हैं।
जाइलस्ट्रा

तो &amp;हमेशा के बजाय इस्तेमाल किया जाना चाहिए &? क्या इसका कोई कारण है?
प्रोमेथियस

116

मुझे प्राप्त टिप्पणियों के आधार पर, मैंने इस पर थोड़ा और गौर किया। ऐसा लगता है कि वर्तमान में HTML संस्थाओं का उपयोग करने और इसके बजाय वास्तविक UTF-8 वर्ण का उपयोग करने के लिए सबसे अच्छा अभ्यास है । सूचीबद्ध कारण इस प्रकार हैं:

  1. UTF-8 एनकोडिंग उन लोगों के लिए पढ़ना और संपादित करना आसान है जो समझते हैं कि चरित्र का क्या अर्थ है और इसे टाइप करना जानते हैं।
  2. UTF-8 एनकोडिंग उन लोगों के लिए HTML इकाई एन्कोडिंग के रूप में अनजाने में ही हैं जो उन्हें नहीं समझते हैं, लेकिन उन्हें दशमलव या हेक्स एनकोडिंग को समझने के लिए विशेष वर्णों के रूप में प्रतिपादन करने का लाभ है।

जब तक आपके पृष्ठ का एन्कोडिंग UTF-8 में ठीक से सेट नहीं हो जाता है, तब तक आपको HTML इकाई के बजाय वास्तविक वर्ण का उपयोग करना चाहिए। मैंने इस विषय के बारे में कई दस्तावेज़ पढ़े, लेकिन सबसे अधिक उपयोगी थे:

से वर्ण एन्कोडिंग का रहस्य: UTF-8 लेख:

विकिपीडिया एक अनुप्रयोग के लिए एक महान मामला अध्ययन है जो मूल रूप से ISO-8859-1 का उपयोग करता है लेकिन UTF-8 में बदल गया जब यह विदेशी भाषाओं का समर्थन करने के लिए बहुत बोझिल हो गया। बॉट अब वास्तव में लेखों के माध्यम से जाएंगे और उपयोगकर्ता-मित्रता और खोज क्षमता के लिए चरित्र संस्थाओं को उनके संबंधित वास्तविक पात्रों में बदल देंगे

यह लेख एक अच्छा उदाहरण भी देता है जिसमें चीनी एन्कोडिंग शामिल है। यहाँ आलस्य के लिए संक्षिप्त उदाहरण दिया गया है:

UTF-8:

這兩個字是甚麼意思

HTML एंटिटीज :

&#36889;&#20841;&#20491;&#23383;&#26159;&#29978;&#40636;&#24847;&#24605;

UTF-8 और HTML इकाई एन्कोडिंग दोनों मेरे लिए अर्थहीन हैं, लेकिन कम से कम UTF-8 एन्कोडिंग एक विदेशी भाषा के रूप में पहचानने योग्य है , और यह एक संपादन बॉक्स में ठीक से प्रस्तुत करेगा। HTML इकाई-एन्कोडेड संस्करण के बारे में निम्नलिखित लेख कहने के लिए आगे बढ़ता है:

हम में से उन लोगों के लिए बहुत असुविधाजनक है जो वास्तव में जानते हैं कि चरित्र संस्थाएं क्या हैं, गरीब उपयोगकर्ताओं के लिए पूरी तरह से अनजाने में जो नहीं करते हैं! यहां तक ​​कि थोड़ा और अधिक उपयोगकर्ता के अनुकूल, "समझदार" चरित्र संस्थाएं जैसे कि & थीटा; उन उपयोगकर्ताओं को छोड़ देगा जो HTML को अपने सिर को खरोंचते हुए सीखने में उदासीन हैं। दूसरी ओर, अगर वे एक संपादन बॉक्स में θ देखते हैं, तो उन्हें पता चल जाएगा कि यह एक विशेष चरित्र है, और उसके अनुसार व्यवहार करें, भले ही वे खुद उस चरित्र को लिखना न जानते हों।

जैसा कि अन्य ने उल्लेख किया है, आपको अभी भी आरक्षित एक्सएमएल वर्णों के लिए HTML संस्थाओं का उपयोग करना होगा (एम्परसेंड, कम-से-अधिक, अधिक से अधिक)।


इस जवाब से काफी मदद मिलती है। लेकिन स्पष्ट करने के लिए, मेरी अपनी समझ के लिए: &entity;किसी घोषित UTF-8 चार्टसेट के साथ HTML दस्तावेज़ में सिंटैक्स का उपयोग करने के बारे में जोखिम भरा या अमान्य कुछ भी नहीं है , सही है? जबकि सादे यूटीएफ -8 अक्षर आपके द्वारा सूचीबद्ध कारणों के लिए बेहतर हैं, फिर भी कुछ HTML संस्थाओं के पास एक ही दस्तावेज़ में उनके साथ कोई समस्या नहीं है?
जैकब फोर्ड

@JacobFord राइट, HTML संस्थाओं को UTF-8 वर्णों के साथ मिलाना जोखिम भरा या अमान्य नहीं है, बस संभावित रूप से स्रोत पढ़ने वाले किसी व्यक्ति को भ्रमित करना।
विलियम ब्रेंडल

5

मैं आसानी से भ्रमित होने वाले पात्रों के लिए UTF-8 का उपयोग नहीं करूंगा। उदाहरण के लिए, एक माइनस से या विशेष रूप से एक अंतरिक्ष से एक गैर-ब्रेकिंग स्पेस को अलग करना मुश्किल है। इन पात्रों के लिए, निश्चित रूप से संस्थाओं का उपयोग करें।

आसानी से समझे जाने वाले वर्णों के लिए (जैसे ऊपर दिए गए चीनी उदाहरण), आगे बढ़ो और यदि आप चाहें तो UTF-8 का उपयोग करें।


5

व्यक्तिगत रूप से मैं लंबे समय से utf-8 में सब कुछ करता हूं, हालांकि, एक html पृष्ठ में, आपको हमेशा एम्परसैंड्स (&), अधिक से अधिक (>) और उससे कम (<) वर्णों को उनकी समकक्ष संस्थाओं में परिवर्तित करने की आवश्यकता होती है, & amp ;, & gt; और & lt;

इसके अलावा, यदि आप utf-8 पाठ का उपयोग करके कुछ प्रोग्रामिंग करने का इरादा रखते हैं, तो देखने के लिए कुछ चीजें हैं।

  • एक्सएमएल को संस्थाओं का उपयोग करते समय मान्य करने के लिए कुछ अतिरिक्त लाइनों की आवश्यकता होती है।
  • कुछ पुस्तकालयों utf-8 के साथ अच्छा नहीं खेलते हैं। उदाहरण के लिए, कुछ लिनक्स वितरणों में PHP ने अपने नियमित अभिव्यक्ति पुस्तकालयों में utf-8 के लिए पूर्ण समर्थन गिरा दिया।
  • HTML संस्थाओं का उपयोग करने वाले पाठ में वर्णों की संख्या को सीमित करना कठिन है, क्योंकि एक एकल इकाई कई वर्णों का उपयोग करती है। इसके अलावा हमेशा आधे में इकाई को काटने का जोखिम होता है।

यह एक बहुत ही मामूली बात है, लेकिन (>) से अधिक सांकेतिक शब्दों में बदलना करने की आवश्यकता नहीं है, केवल (<) से कम है।
कोडमेकिन

4

संस्थाएँ आपको ब्रेन-डेड ग्राहकों के साथ कुछ अनुकूलता खरीद सकती हैं जो एनकोडिंग को सही ढंग से नहीं समझते हैं। मुझे विश्वास नहीं है कि इसमें कोई भी वर्तमान ब्राउज़र शामिल हैं, लेकिन आप कभी नहीं जानते कि अन्य प्रकार के कार्यक्रम आपको मार सकते हैं।

हालाँकि, अधिक उपयोगी, यह है कि HTML इकाइयाँ आपको अपनी त्रुटियों से बचाती हैं: यदि आप सर्वर पर कुछ गलत करते हैं और आप किसी पृष्ठ को HTTP शीर्ष लेख के साथ सेवारत करते हैं जो कहता है कि यह ISO-8859-1एक METAटैग है और एक टैग जो इसे कहता है UTF-8, कम से कम आपका & mdash; हमेशा काम करेंगे।


5
हालांकि आप विपरीत तर्क दे सकते हैं - &mdashहेडर के गलत होने पर भी सही तरीके से दिखना संभव नहीं है जिससे यह पता लगाना मुश्किल हो जाता है कि कोई समस्या है।
पेका

4

HTML इकाइयाँ तब उपयोगी होती हैं जब आप ऐसी सामग्री उत्पन्न करना चाहते हैं जो (कई) अलग-अलग एन्कोडिंग वाले पृष्ठों में (डायनामिक रूप से) शामिल होने वाली हो। उदाहरण के लिए, हमारे पास सफ़ेद लेबल सामग्री है जो ISO-8859-1 और UTF-8 दोनों इनकोड किए गए वेब पेजों में शामिल है ...

यदि वर्ण सेट / से UTF-8 में रूपांतरण इतनी बड़ी अविश्वसनीय गड़बड़ थी (आप हमेशा कुछ पात्रों और कुछ उपकरण जो ठीक से रूपांतरित नहीं होते हैं) पर ठोकर खाते हैं, तो UTF-8 पर मानकीकरण करने का तरीका होगा।


2

यदि आपके पृष्ठ utf-8 में सही ढंग से एन्कोडेड हैं, तो आपको html संस्थाओं की कोई आवश्यकता नहीं होनी चाहिए, बस उन पात्रों का उपयोग करें जिन्हें आप सीधे चाहते हैं।


3
मुझे लगता है कि आपको अभी भी आरक्षित वर्णों को एनकोड करने की आवश्यकता होगी।
rmeador

@rmeador - मैं इससे सहमत हूँ।
ओटवियो डेसियो

2

पिछले सभी जवाब मेरे लिए मायने रखते हैं।

इसके अलावा: यह ज्यादातर उस संपादक पर निर्भर करता है जिसका आप उपयोग करने का इरादा रखते हैं और दस्तावेज़ भाषा। संपादक के लिए न्यूनतम आवश्यकता के रूप में यह दस्तावेज भाषा का समर्थन करता है। इसका मतलब है, कि यदि आपका पाठ जापानी में है, तो एक संपादक का उपयोग करने से सावधान रहें जो उन्हें नहीं दिखाता है (अर्थात दस्तावेज़ के लिए कोई संस्था नहीं)। यदि इसका अंग्रेजी में, आप एक पुराने विम-जैसे संपादक का उपयोग कर सकते हैं और केवल सापेक्ष शायद ही कभी कॉपी के लिए संस्थाओं का उपयोग कर सकते हैं; और मित्र। बेशक: & gt; के लिए> और अन्य HTML- विशेष अभी भी भागने की जरूरत है। लेकिन यहां तक ​​कि अन्य लैटिन -1 भाषाओं (जर्मन, फ्रेंच आदि) के साथ ä लिखना आपके लिए एक दर्द है जहां आप जानते हैं ...

इसके अलावा, मैं व्यक्तिगत रूप से अदृश्य पात्रों के लिए इकाइयाँ लिखता हूँ और जो मानक-असि के समान दिखते हैं और इसलिए आसानी से भ्रमित होते हैं। उदाहरण के लिए, u1173 (कुछ वर्णों में डैश की तरह दिख रहा है) या u1175 है, जो ऊर्ध्वाधर पट्टी की तरह दिखता है। मैं किसी भी मामले में उन लोगों के लिए संस्थाओं का उपयोग करूंगा।


& gt; > के लिए आवश्यक नहीं है, आप बस> का उपयोग कर सकते हैं। & LT; IS के लिए आवश्यक है, यद्यपि।
Codemonkey
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.