2013-07-29 5 views
10

जब मैं इस तरह एक मेटा एन्कोडिंग के बिना किसी भी सरल HTML दस्तावेज़ मान्य करने के लिए कोशिश कर रहा हूँ मैं बहुत मैं हो रही है एक त्रुटि संदेश के बारे में उलझन हो रही है:यह HTML5 दस्तावेज़ क्यों अमान्य है?

<!DOCTYPE html> 
<html> 
<head> 
<title>Test</title> 
</head> 
<body>Test</body> 
</html> 

W3C मान्य http://validator.w3.org अनिच्छा से दस्तावेज़ के साथ के रूप में मान्य स्वीकार करता है बस कुछ ही चेतावनी जब यह प्रत्यक्ष इनपुट फार्म में चिपकाया जाता है, लेकिन जब दस्तावेज़ को अपलोड या URI के आधार पर भरी हुई है, मान्यता यह त्रुटि संदेश के साथ विफल

The character encoding was not declared. Proceeding using windows-1252.

दो चीजें मैं इस त्रुटि के बारे समझ में नहीं आता हैं :

  • फ़ॉलबैक नियम मौजूद होने पर एक गुम वर्ण एन्कोडिंग त्रुटि क्यों मानी जाती है?
  • वैधकर्ता यूटीएफ -8 के बजाय विंडोज -1252 क्यों मानता है, किसी भी ब्राउज़र की तरह?

क्या कोई इन दो बिंदुओं को समझा सकता है? मैं इस सामान के लिए बहुत नया हूं, इसलिए कृपया मेरे साथ भालू।

+3

क्या आपको लगता है कि ब्राउज़र एटीएफ -8 मानता है जब कोई एन्कोडिंग निर्दिष्ट नहीं होती है? आप किस "फॉलबैक नियम" का जिक्र कर रहे हैं? –

+0

क्या विंडोज -1252 एन्कोडिंग काम करता है? – pattyd

+0

दिलचस्प ... आपका एचटीएमएल उदाहरण एचटीएमएल 5/यूटीएफ 8 के रूप में मान्य करता है जब मैं इसे प्रत्यक्ष इनपुट विंडो – WebChemist

उत्तर

5

यह वैधकर्ता का "प्रत्यक्ष इनपुट" मोड है जो यूटीएफ -8 के लिए डिफ़ॉल्ट है।

wikipedia

If a user agent reads a document with no character encoding information, it can fall back to using some other information. For example, it can rely on the user's settings, either browser-wide or specific for a given document, or it can pick a default encoding based on the user's language. For Western European languages, it is typical and fairly safe to assume Windows-1252, which is similar to ISO-8859-1 but has printable characters in place of some control codes.

2

W3C मान्य कहा:

The validator checked your document with an experimental feature: HTML5 Conformance Checker. This feature has been made available for your convenience, but be aware that it may be unreliable, or not perfectly up to date with the latest development of some cutting-edge technologies.

तो नमक की एक चुटकी के साथ कुछ परिणाम लेने के उपयोगकर्ता-एजेंट (ब्राउज़र) चीजों की एक संख्या के आधार अन्य एन्कोडिंग लागू हो जाएगी ।

इसके अलावा, कोई उपयोगी 'पतन वापस' नहीं है, वैधकर्ता को केवल कुछ/कुछ चुनने की आवश्यकता है ताकि यह आपके लिए मान्य करने का प्रयास कर सके। डब्ल्यू 3 सी यह निर्धारित नहीं कर सकता कि आप कौन सी एन्कोडिंग चाहते हैं/उपयोग करने की आवश्यकता है। आपको अपने वेब पेज पर सेवा करने के लिए आवश्यक पात्रों के आधार पर इसे स्वयं घोषित करना होगा, और फिर उस पर आधारित अपने दस्तावेज़ को सत्यापित करने के लिए डब्ल्यू 3 सी से पूछें।

वेब पेज बनाने के लिए आप किस संपादक/WYSIWYG का उपयोग कर रहे हैं? क्या हमारे पास वह URL हो सकता है जिसे आप सत्यापित करने का प्रयास कर रहे हैं?

+0

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

+0

उचित बिंदु। यद्यपि यह कड़ाई से "किसी भी वर्णसेट जानकारी को अनदेखा नहीं करता है" क्योंकि यह मेटा वर्णसेट को बदलता है अगर यह utf-8 नहीं है (और HTML टिप्पणी कोड में उपयोगकर्ता द्वारा प्रदान किए गए वर्णमाला को स्थान देता है) – James

6

अच्छा, यह आपके द्वारा उपयोग किए जा रहे कार्यों पर निर्भर करता है।

  • आप File Upload विकल्प का उपयोग कर रहे हैं, यह निर्भर करता है जो एन्कोडिंग पर HTML फ़ाइल के साथ बचा लिया गया था।
  • यदि आप Direct Input विकल्प का उपयोग कर रहे हैं, तो यह नेविगेटर पर निर्भर करता है।

आप सत्यापनकर्ता लगता नहीं करना चाहती, और UTF-8 का उपयोग करते हैं, तो आपको निम्न लाइन

<meta charset="UTF-8"> 
head element अंदर

जोड़ सकते हैं।

+0

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

1

जब आप यूआरआई द्वारा मान्यता का उपयोग करते हैं, तो सर्वर को Content-Type शीर्षलेख मान के charset पैरामीटर में HTTP हेडर में वर्ण एन्कोडिंग की घोषणा करना चाहिए।इस मामले में, यह स्पष्ट रूप से नहीं होता है। आप स्थिति की जांच कर सकते हैं उदा। Rex Swain's HTTP Viewer का उपयोग कर।

एचटीएमएल 5 सीआर में खंड 4.2.5.5 Specifying the document's character encoding के अनुसार

, "एक HTML दस्तावेज एक बीओएम के साथ शुरू नहीं करता है, और इसकी एन्कोडिंग स्पष्ट सामग्री प्रकार मेटाडाटा द्वारा नहीं दिया जाता है, और दस्तावेज़ नहीं एक iframe srcdoc दस्तावेज़, तो चरित्र है एन्कोडिंग का उपयोग एएससीआईआई-संगत चरित्र एन्कोडिंग होना चाहिए, और एन्कोडिंग को एनाोडिंग घोषणा स्थिति में एक http-equiv विशेषता के साथ एक वर्णमाला विशेषता या मेटा तत्व के साथ मेटा तत्व का उपयोग करके निर्दिष्ट किया जाना चाहिए। "यह थोड़ा जटिल है, लेकिन निचली पंक्ति है: एन्कोडिंग घोषित करने के कई तरीके हैं, लेकिन यदि उनमें से कोई भी उपयोग नहीं किया जाता है, तो दस्तावेज़ गैर-अनुरूप है।

क्यों यह निर्दिष्ट करता है कि कुछ हद तक सट्टा है, लेकिन सामान्य विचार यह है कि ऐसे नियम विश्वसनीयता और मजबूती को बढ़ावा देते हैं। जब नियम का पालन नहीं किया जाता है, तो विभिन्न ब्राउज़र अलग-अलग डिफ़ॉल्ट या अनुमान का उपयोग कर सकते हैं।

वैधकर्ता विंडोज -1252 मानता है, क्योंकि एचटीएमएल 5 नियमों का यही कारण है। प्रसंस्करण नियम 8.2.2.1 Determining the character encoding में हैं। वे काफी जटिल हैं, लेकिन वे बड़े पैमाने पर आधुनिक ब्राउज़र के तरीके को प्रतिबिंबित करते हैं (और इसे एक मानक बनाने का लक्ष्य है)। गैर-अनुरूप दस्तावेजों से निपटने के लिए नियम भी हैं, लेकिन यह उन दस्तावेजों को अनुरूप नहीं बनाता है; त्रुटि प्रसंस्करण नियम वास्तव में "फॉलबैक" नहीं हैं और इन पर भरोसा नहीं किया जाना चाहिए, खासकर जब पुराने ब्राउज़र हमेशा नियमों से नहीं खेलते हैं।

त्रुटि नियम कुछ हद तक ढीले होते हैं जब ऐसी स्थिति की बात आती है जहां सबकुछ विफल रहता है और "कार्यान्वयन-परिभाषित या उपयोगकर्ता-निर्दिष्ट डिफ़ॉल्ट वर्ण एन्कोडिंग" का उपयोग किया जाना है। ब्राउजर क्या कर सकता है, इस पर सिर्फ "सुझाव" हैं (फिर से, यह दर्शाते हुए कि आधुनिक ब्राउज़र आमतौर पर क्या करते हैं), और इसमें "अस्पष्ट अवधारणा", एक अस्पष्ट अवधारणा का उपयोग शामिल हो सकता है। सत्यापनकर्ता विंडोज -1252 का उपयोग करता है, शायद इसलिए कि यह अंग्रेजी के लिए डिफ़ॉल्ट है और वैधकर्ता अंग्रेजी बोलता है, या शायद इसलिए कि यह अनुमान है कि किसी अन्य एकल विकल्प से अधिक बार सही होने की उम्मीद है।

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