2012-01-12 16 views
13

हम नीचे कोड द्वारा एक व्यक्ति सीएसएस फ़ाइल में वर्ण एन्कोडिंग घोषणा कर सकते हैं:एक व्यक्तिगत जेएस फ़ाइल में वर्ण एन्कोडिंग कैसे घोषित करें?

@charset "UTF-8";

मेरा प्रश्न है:

कैसे एक व्यक्ति जे एस फ़ाइल में वर्ण एन्कोडिंग घोषित करने के लिए?

अगर मैं अपने दोस्त को एक जेएस फ़ाइल भेजता हूं, तो मुझे आशा है कि वह (जे) इस जेएस फ़ाइल को ब्राउज़ या संपादित करना शुरू कर देगा जब वह (एस) कोड से इस जेएस फ़ाइल के चरित्र एन्कोडिंग को समझ सकता है।

धन्यवाद!

उत्तर

13

आप नहीं कर सकते। हालांकि, आप इसे script tag में परिभाषित कर सकते हैं जो charset attribute का उपयोग करके फ़ाइल को पृष्ठ में लाता है। में charset, यदि कोई हो, तो आप फ़ाइल के साथ सेवा कर सकते हैं। उद्धरण:

charset विशेषता बाहरी स्क्रिप्ट संसाधन के वर्ण एन्कोडिंग देता है। src विशेषता मौजूद नहीं है तो विशेषता निर्दिष्ट नहीं की जानी चाहिए। यदि विशेषता सेट की गई है, तो इसका मान वैध वर्ण एन्कोडिंग नाम होना चाहिए, preferred MIME name के लिए उस एन्कोडिंग के लिए होना चाहिए, और बाहरी फ़ाइल के Content-Type metadata के charset पैरामीटर में दिए गए एन्कोडिंग से मेल खाना चाहिए, यदि कोई हो। [IANACHARSET]

पुन अपने संपादित:

अगर मैं अपने दोस्त को एक जे एस फ़ाइल को भेजने, मुझे आशा है कि वह (वह) इस बात को समझ सकते हैं कोड स्वयं से फ़ाइल के वर्ण एन्कोडिंग जेएस जब वह (वह) शुरू होता है ब्राउज़र या इस जेएस फ़ाइल को संपादित करें।

इसके लिए, आपको बस उसे बताना होगा। अगर फ़ाइल यूटीएफ -8 या विंडोज -1252 या आईएसओ 885 9 -1 में है, दुर्भाग्य से उपलब्ध एन्कोडिंग का कोई इन-फाइल संकेतक नहीं है, इसलिए मैं शुरुआत में एक टिप्पणी शामिल करूंगा:

// Encoding: UTF-8 

यदि आप यूटीएफ -16 या यूटीएफ -32 का उपयोग कर रहे हैं, तो आपको BOM का उपयोग करने के लिए अपने संपादक को बताने में सक्षम होना चाहिए, जो अन्य संपादकों को देखना चाहिए और समझना चाहिए (यदि वे यूनिकोड-जागरूक संपादक हैं)। यह आम तौर पर केवल तभी लागू होता है जब आप अपनी टिप्पणियों को एक पाठ (भाषा) में लिख रहे हों, जिसमें बहु-बाइट वर्णों की आवश्यकता होती है, और यदि आपके पास टिप्पणियों का उच्च अनुपात कोड है (क्योंकि कोड पश्चिमी पाठ के साथ लिखा गया है), हालांकि निश्चित रूप से आपको पसंद है किसी भी एन्कोडिंग का उपयोग करने के लिए आपका स्वागत है। यह सिर्फ यह है कि अगर कोड के लिए टिप्पणियों के अनुपात कम है, तो आप शायद बंद UTF-8 के साथ चिपके हुए हैं, भले ही टिप्पणियां एक पाठ चार-बाइट वर्ण की बहुत सारी की आवश्यकता होती है में हैं बेहतर कर रहे हैं, क्योंकि कोड केवल चरित्र प्रति एक बाइट की आवश्यकता होगी है । (जबकि UTF-16 में, आप अपनी टिप्पणी में चार-बाइट वर्ण के बजाय अधिक दो-बाइट हो सकता है, लेकिन कोड हमेशा चरित्र प्रति दो बाइट्स की आवश्यकता होगी;। और UTF-32, चरित्र प्रति चार बाइट में तो पूरे पर फ़ाइल अच्छी तरह से बड़ा हो सकता है, भले ही टिप्पणियों को कम जगह लेने। लेकिन यहाँ मैं शायद आप चीजों को आप पहले से ही जहाँ तक मुझे पता है की तुलना में बेहतर है, अगर मैं प्रश्न के लिए अपने कारणों के बारे में सही ढंग से अनुमान लगा रहा हूँ कह रहा हूँ।)

+0

आप यूटीएफ -8 के लिए बीओएम भी शामिल कर सकते हैं, और ब्राउज़र इसका सम्मान करते हैं। – Andrea

+0

@Andrea: सभी ब्राउज़रों नहीं, भरोसेमंद नहीं। प्रतिक्रिया के 'अक्षरसेट 'को सेट करना वैकल्पिक नहीं है, प्रासंगिक आरएफसी स्पष्ट रूप से कहता है कि बिना किसी के, प्रतिक्रिया यूएस-एएससीआईआईआई है। बस कुछ हफ्ते पहले इसके बारे में एक सवाल था, आईई यूटीएफ -8 में AJAX- अनुरोधित JSON की व्याख्या कर रहा था लेकिन फ़ायरफ़ॉक्स बीओएम पर झुका रहा था, इसे अवैध JSON कह रहा था। –

+0

@ टीजेड्रोडर कौन सा प्रासंगिक आरएफसी? [WHATWG के एन्कोडिंग स्पेक का कहना है कि "बाइट ऑर्डर मार्क (जिसे बीओएम भी कहा जाता है) किसी और चीज़ की तुलना में अधिक आधिकारिक है"] (https://encoding.spec.whatwg.org/#specification-hooks)।बेशक, यदि आप चीजें ठीक से करते हैं तो आपको एक वर्णसेट = शामिल करना चाहिए। – Andrea

3

वहाँ फ़ाइल में एन्कोडिंग घोषित करने के लिए कोई जावास्क्रिप्ट निर्माण नहीं है, जिस तरह से आप सीएसएस में कर सकते हैं। डेटा वितरित करते समय प्राप्तकर्ताओं को एन्कोडिंग को सूचित किया जाना चाहिए।ई-मेल संलग्नक के रूप में फ़ाइलों को भेजते समय, आपका ई-मेल प्रोग्राम उन्हें सामग्री-प्रकार शीर्षलेखों के साथ शामिल नहीं कर सकता है जो एन्कोडिंग को इंगित करता है (लेकिन यह पता लगाने में कठिन समय हो सकता है कि एन्कोडिंग क्या हो सकती है)।

आप एक यूटीएफ -8 एन्कोडेड फ़ाइल की शुरुआत में बाइट ऑर्डर मार्क (बीओएम) भी कर सकते हैं। यद्यपि यूटीएफ -8 में कोई बाइट ऑर्डर समस्या नहीं है, बीओएम एक उपयोगी संकेतक के रूप में कार्य करता है- एक फ़ाइल जो यूटीएफ -8 एन्कोडिंग में बीओएम का गठन करती है बाइट्स से शुरू होती है, शायद यूटीएफ -8 एन्कोडेड है। यही कारण है कि कार्यक्रम अन्य संकेतों की अनुपस्थिति में एन्कोडिंग का अनुमान लगा सकते हैं। यह निश्चित रूप से 100% विश्वसनीय नहीं है, लेकिन एक उपयोगी बात है।

कई टेक्स्ट संपादकों के पास आपकी फ़ाइल को "बीओएम के साथ एन्कोडेड" के रूप में सहेजने का विकल्प होता है।

(वेब ​​पृष्ठों पर बीओएम एक बार एक जोखिम के रूप, में माना गया था के बाद से ब्राउज़रों चरित्र डेटा के रूप में यह इलाज के लिए देखे गए हैं। इन दिनों, बीओएम भी में UTF-8 उपयोगी बल्कि एक जोखिम की तुलना में है।)

3

यदि आप मानव-पठनीय तरीके से फ़ाइल के एन्कोडिंग को इंगित करने में रुचि रखते हैं, T.J. Crowder's विचार (// Encoding: UTF-8 जैसी फ़ाइल में कोई टिप्पणी जोड़ना) केवल यही बात है। और Jukka K. Korpela ने बताया, आप बीओएम का भी उपयोग कर सकते हैं।

लेकिन अगर आप एक मशीन पठनीय रास्ता चारसेट उस दस्तावेज़ में घोषित किया जाता है अन्य तरीके के एक जोड़े हैं इंगित करने के लिए चाहते हैं:

उदाहरण के लिए, एक अपाचे httpd सर्वर पर आप निम्न घोषणाओं के किसी भी उपयोग कर सकते हैं :

  1. AddDefaultCharset UTF-8
  2. AddCharset UTF-8 .js
  3. AddType 'application/javascript; charset=UTF-8' js *

* मैं "text/javascript" से अधिक "application/javascript" प्रयोग करने के लिए मामले को बनाने में कोई दिलचस्पी नहीं है। लेकिन अगर आप यह जानने में रुचि रखते हैं कि क्यों एक या दूसरा बेहतर हो सकता है, सीएफ। https://stackoverflow.com/a/4101763/1070047। विषय को देखते हुए, application/javascript काफी उपयुक्त लगता है (विशेष रूप से यदि आप बीओएम का उपयोग करने का इरादा रखते हैं, क्योंकि यह इंगित करता है कि कोड को बाइनरी के रूप में माना जाना चाहिए)।

कोड में व्याख्या की जाएगी, तो/संसाधित/संकलित सर्वर साइड (जैसे पीएचपी), आप दस्तावेज़ में शीर्षलेख सेट कर सकते हैं, जैसे ...

header("Content-Type: application/javascript; charset=utf-8");

कम से कम पीएचपी भीतर, कि शीर्ष लेख के लिए सुनिश्चित हो किसी भी आउटपुट होने से पहले बयान।

आखिरकार, यह निर्धारित करते समय कि किस घोषणा का उपयोग करना है, उस पर विचार करें (जब समझ में/सम्मानित किया गया है, यानी आईई में नहीं) बीओएम के पास दस्तावेज़ शीर्षकों की तुलना में अधिक अधिकार है। और दोनों जुड़े/सोर्स किए गए वर्णमाला घोषणाओं (जैसे <script type="application/javascript" src="script.js" charset="utf-8"></script>) पर प्राथमिकता लेते हैं।

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