क्यों निर्दिष्ट करें @charset "UTF-8"; अपने सीएसएस फ़ाइल में?


173

मैं इस निर्देश को कई सीएसएस फाइलों की पहली पंक्ति के रूप में देख रहा हूं जो मेरे लिए बदल दी गई हैं:

@charset "UTF-8";

यह क्या करता है, और क्या यह आवश्यक है?

इसके अलावा, अगर मैं इस मेटा टैग को अपने "हेड" तत्व में शामिल करता हूं, तो क्या यह मेरी सीएसएस फाइलों के भीतर भी मौजूद होने की आवश्यकता को समाप्त कर देगा?

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

जवाबों:


123

यह ब्राउज़र को css फ़ाइल को UTF-8 के रूप में पढ़ने के लिए कहता है। यह आसान है अगर आपके सीएसएस में यूनिकोड वर्ण हैं और न केवल एएससीआईआई।

मेटा टैग में इसका उपयोग करना ठीक है, लेकिन केवल उन पृष्ठों के लिए जो उस मेटा टैग को शामिल करते हैं।

सीएसएस 2 के लिए डब्ल्यू 3 सी कल्पना में सीएसएस फाइलों के चरित्र सेट रिज़ॉल्यूशन के नियमों के बारे में पढ़ें ।


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

147

यह उन संदर्भों में उपयोगी है जहाँ एन्कोडिंग को HTTP हेडर या अन्य मेटा डेटा, जैसे स्थानीय फ़ाइल सिस्टम, के अनुसार नहीं बताया गया है।

निम्नलिखित स्टाइलशीट की कल्पना करें:

[rel="external"]::after
{
    content: ' ↗';
}

यदि कोई पाठक फ़ाइल को हार्ड ड्राइव में सहेजता है और आप @charsetनियम को छोड़ देते हैं , तो अधिकांश ब्राउज़र इसे OS 'लोकेल एन्कोडिंग, जैसे Windows-1252, और एक तीर के बजाय एक â सम्मिलित करेंगे।

दुर्भाग्य से, आप इस तंत्र पर भरोसा नहीं कर सकते क्योंकि समर्थन ... दुर्लभ है। और याद रखें कि नेट पर एक HTTP हेडर हमेशा @charsetनियम को ओवरराइड करेगा ।

स्टाइलशीट के वर्ण सेट को निर्धारित करने के लिए सही नियम प्राथमिकता के क्रम में हैं:

  1. HTTP चारसेट हेडर।
  2. बाइट ऑर्डर मार्क।
  3. पहला @charsetनियम।
  4. UTF-8।

अंतिम नियम सबसे कमजोर है, यह कुछ ब्राउज़रों में विफल हो जाएगा
इसमें charsetविशेषता HTML 5<link rel='stylesheet' charset='utf-8'> में अप्रचलित है । विभिन्न घोषणाओं के बीच संघर्ष के लिए बाहर देखो। वे डिबग करना आसान नहीं है।

अनुशंसित पाठ


क्या आपका मतलब है कि सीएसएस फाइलों को content-type:text/css;charset=utf-8हेडर के साथ परोसा जाना चाहिए ?
पचेरियर

1
@ स्पेसर हाँ, अगर यह HTML फ़ाइल की एन्कोडिंग है (यह होना चाहिए)।
fuxia

मेरा मतलब है कि यह पहले से ही निहित नहीं है कि बिना चार्ट के, सीएसएस फ़ाइल के चार्ट की व्याख्या एम्बेडिंग एचटीएमएल फ़ाइल की तरह ही होनी चाहिए?
पचेरियर

1
@ स्पेसर मैंने देखा कि यह हमेशा ऐसा नहीं होता है।
MatTheCat

3

पाठ वाले प्रत्येक पृष्ठ पर हमेशा चरित्र सेट विनिर्देश शामिल करने का एक कारण क्रॉस साइट स्क्रिप्टिंग कमजोरियों से बचना है। ज्यादातर मामलों में UTF-8 वर्ण सेट HTML पृष्ठों सहित पाठ के लिए सबसे अच्छा विकल्प है।


2

यदि आप अपनी css फाइलों में <meta> टैग लगा रहे हैं, तो आप कुछ गलत कर रहे हैं। <मेटा> टैग आपकी HTML फ़ाइलों में है, और ब्राउज़र को बताता है कि HTML कैसे एन्कोडेड है, यह css के बारे में कुछ नहीं कहता है, जो एक अलग फ़ाइल है। आप अपने HTML और css के लिए पूरी तरह से अलग-अलग एन्कोडिंग हो सकते हैं, हालाँकि मैं सोच भी नहीं सकता कि यह एक अच्छा विचार होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.