2011-03-28 10 views
5

मान लीजिए कि एक ब्राउज़र एक <meta> टैग कि वर्ण-एन्कोडिंग, इस तरह निर्दिष्ट करता है का सामना करना पड़ता:ब्राउज़र <meta> टैग को कैसे नियंत्रित करता है जो वर्ण-एन्कोडिंग निर्दिष्ट करता है?

<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> 

यह पेज फिर से पार्स करने शुरू से ही से शुरू करता है, <head> खंड में पूर्ववर्ती पात्रों में से कुछ हो सकता है के बाद से गलत तरीके से व्याख्या की गई है? या क्या कुछ अन्य बाधाएं हैं जो पूर्व वर्णों को गलत तरीके से व्याख्या करने से रोकती हैं?

उत्तर

4

जहाँ तक मुझे पता है, अभ्यस्त <head> में एक चारसेट घोषणा पाने के बाद वापस जाने के लिए ब्राउज़र और वे कहते हैं कि बात करने के लिए एक ASCII संगत चारसेट ऊपर मान। दुर्भाग्य से मुझे इसकी पुष्टि करने के लिए कोई संदर्भ नहीं मिल रहा है।

पुष्टि ब्राउज़रों एक सामग्री प्रकार मेटा तत्व पर ध्यान नहीं देगा, यदि सर्वर पहले से ही एक सामग्री प्रकार HTTP हेडर प्रदान करता है, ताकि आप एक <meta> तत्व के साथ एक "गलत" सर्वर साइड चारसेट ओवरराइड नहीं कर सकते।

<meta> चार्टसेट घोषणा के लिए बिंदु HTML दस्तावेज़ों के लिए है जो HTTP सर्वर द्वारा सर्वर नहीं हैं।

इसका मतलब है कि आपको HTML फ़ाइल में <meta> वर्णसेट घोषणा पर भरोसा नहीं करना चाहिए, लेकिन सही HTTP प्रदान करने के लिए अपने HTTP सर्वर को कॉन्फ़िगर करें। अगर किसी कारण से आपको <meta> वर्णसेट घोषणा पर भरोसा करना है, तो आपके पास केवल उस बिंदु तक ASCII वर्ण होना चाहिए और जितना संभव हो सके <head> में इसे पहले तत्व के रूप में रखें।

+1

धन्यवाद। मुझे" उस बिंदु तक एक ASCII संगत वर्णमाला मानने के बारे में एक संदर्भ मिला। "यह है (आश्चर्य!) डब्ल्यू 3 सी: http://www.w3.org/TR /html4/charset.html#h-5.2.2 टैग की नियुक्ति के बारे में अच्छी सलाह, यदि इसकी आवश्यकता हो। –

0

इसका नोड संरचना पर कोई वास्तविक प्रभाव नहीं है। केवल टेक्स्ट नोड्स (और विशेषता नोड्स) की सामग्री को ट्रांसकोड किया जाना चाहिए।

अपने सर्वर

Content-type: text/html;charset=utf-8 

भेजता है ... ब्राउज़र हेडर शुरू से ही सही चारसेट पता चल जाएगा। आप एक .htaccess युक्त फ़ाइल के साथ चौथाई acieve कर सकते हैं:

AddDefaultCharset utf-8 
+0

लेकिन संभवत: ऐसा हो सकता है कि मेटा टैग 'सामग्री-प्रकार' शीर्षलेख में से एक से अलग वर्ण सेट निर्दिष्ट करता है, अन्यथा इसके लिए मेटा टैग का उपयोग करने में कोई भी बिंदु नहीं प्रतीत होता है। और यद्यपि कोई दस्तावेज़ नोड्स को फिर से पार्स नहीं किया जाना चाहिए, क्या आपको अभी भी ' 'अनुभाग के पिछले भाग में कुछ गलत नहीं मिला है? (उदाहरण के लिए कुछ जावास्क्रिप्ट में एक स्ट्रिंग मान ") –

1

पार्सर कुछ परिस्थितियों में शुरू हो सकता है। प्रासंगिक नमूना यहां है: http://dev.w3.org/html5/spec/parsing.html#change-the-encoding

ध्यान दें कि ब्राउज़र पारंपरिक रूप से संभवतः इस एल्गोरिदम का पालन नहीं करते हैं; संभावना है कि उन्होंने सब कुछ अलग-अलग चीजें की हैं। हालांकि, उपर्युक्त लिंक बताता है कि एचटीएमएल 5 अनुरूप ब्राउज़र क्या करना चाहिए। वर्णित एल्गोरिदम संभावित रूप से पिछले ब्राउज़र के विभिन्न ब्राउज़रों का एक मिश्रण है।

चूंकि एचटीएमएल 5 अभी भी एक कामकाजी मसौदा है, इसे बदलने के अधीन माना जाना चाहिए।

+0

+1 दिलचस्प। मैं इसे एचटीएमएल 5 में नया लेता हूं। –

+0

@ जोएल - एल्गोरिदम का मानकीकरण नया है एचटीएमएल 5 में, हाँ। – Alohci

संबंधित मुद्दे