2009-01-12 17 views
91

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

उदाहरण: एम डैश, एंपरसैंड, आदि

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

+0

एक तरफ ध्यान दें, PHP में htmlentities() क्या करेंगे? –

+0

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

उत्तर

63

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

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

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

+3

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

+2

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

98

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

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

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

से

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

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

यह लेख चीनी एन्कोडिंग को शामिल करने वाला एक अच्छा उदाहरण भी देता है।

UTF-8:

這兩個字是甚麼意思

एचटीएमएल संस्थाओं:

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

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

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

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

+2

यह स्वीकार्य उत्तर होना चाहिए। –

+0

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

+0

@ जैकोबफोर्ड राइट, यूटीएफ -8 अक्षरों के साथ एचटीएमएल इकाइयों को मिलाकर जोखिम भरा या अमान्य नहीं है, जो स्रोत को पढ़ने वाले किसी को संभावित रूप से भ्रमित कर रहा है। –

2

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

+3

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

+0

@ रेमेडोर - मैं इसके साथ सहमत हूं। –

4

संस्थाएं आपको मस्तिष्क-मृत ग्राहकों के साथ कुछ संगतता खरीद सकती हैं जो एन्कोडिंग को सही ढंग से समझ में नहीं आती हैं। मुझे विश्वास नहीं है कि इसमें कोई भी मौजूदा ब्राउज़र शामिल है, लेकिन आप कभी नहीं जानते कि अन्य प्रकार के कार्यक्रम आपको किस प्रकार मार रहे हैं। यदि आप सर्वर पर कुछ misconfigure और आप एक HTTP हेडर कि कहना है कि वह ISO-8859-1 है और एक META टैग कि कहना है कि वह UTF-8 है के साथ एक पृष्ठ की सेवा खत्म:

अधिक उपयोगी है, हालांकि, कि HTML निकाय अपनी खुद की त्रुटियों से बचाने के है , कम से कम आपके & mdash; es हमेशा काम करेगा।

+0

बहुत अच्छा बिंदु विशेष रूप से यदि आप रक्षात्मक कोडर हैं;) – VBAssassin

+5

आप विपरीत तर्क दे सकते हैं - 'और mdash'es सही तरीके से दिख रहे हैं भले ही हेडर गलत तरीके से कॉन्फ़िगर किए गए हों, यह एक समस्या का पता लगाने के लिए * कठिन * बनाता है। –

4

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

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

2

पिछले सभी उत्तरों मुझे समझ में आता है।

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

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

4

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

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

4

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

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

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