2011-03-25 13 views
6

लोड नहीं कर रहे हैं मेरी साइट लोकलहोस्ट पर ठीक काम करती है, मेरी जावास्क्रिप्ट लोड हो रही है और ठीक काम कर रही है। लेकिन जब मैं साइट पर तैनात करता हूं तो स्क्रिप्ट काम नहीं कर रही है। जब मैं सही पेज क्लिक करें और स्रोत देखें और फिर से जुड़ा हुआ स्क्रिप्ट फ़ाइल को देखते हैं, यह फ़ाइल मैं »¿ (समारोह ($) {जावास्क्रिप्ट में अजीब पात्र इसे

स्थानीय होस्ट पर, मेरे स्क्रिप्ट फ़ाइल के शुरू में कुछ अजीब कैरेक्टर हैं क्या इन पात्रों खड़ी कर रहा है इस (function($){

की तरह शुरू होता है मेरी जावास्क्रिप्ट फ़ाइल के लिए prepended करने जा?

+2

मुझे आश्चर्य है कि क्या पात्र यूनिकोड नेता हो सकते हैं? – Pointy

+0

@ पॉइंटी: वे हैं। वह यूटीएफ -8 बीओएम है। – Martijn

+0

आप कहते हैं कि आपकी स्क्रिप्ट काम नहीं कर रही है। यह बहुत विशिष्ट नहीं है। आप क्या त्रुटि प्राप्त कर रहे हैं? आप क्या होने की उम्मीद करते थे, लेकिन नहीं? जावास्क्रिप्ट कंसोल, फायरबग, जावास्क्रिप्ट डीबगर और ऐसे टूल रिपोर्ट क्या करते हैं? – Martijn

उत्तर

6

आप एन्कोडिंग "UTF-8 बीओएम बिना" में फ़ाइल को फिर से बचाने के लिए किया है। आप नोटपैड ++ या अन्य उपयोग कर सकते हैं संपादकों

दृश्य स्टूडियो में:

डिफ़ॉल्ट रूप से, विजुअल स्टूडियो बीओएम के साथ यूटीएफ एन्कोडिंग का उपयोग करता है; हालांकि, यदि आप चाहें तो आप इसे एक अलग एन्कोडिंग में सहेज सकते हैं। जब आप सहेजें के रूप में संवाद पर जाते हैं, तो आप 'एन्कोडिंग के साथ सहेजें' विकल्प देखने के लिए सहेजें बटन का विस्तार कर सकते हैं। यह आपको एक अलग एन्कोडिंग के लिए संकेत देगा, और मुझे लगता है कि यूनिकोड विकल्पों में से एक बीओएम छोड़ देगा (सूची में कहीं भी हस्ताक्षर के बिना यूटीएफ -8 है)।

स्रोत: http://forums.silverlight.net/forums/t/144306.aspx

+0

सुनिश्चित नहीं है कि आपका क्या मतलब है? मैं विजुअल स्टूडियो का उपयोग कर रहा हूं, निश्चित रूप से बनाम फाइलों के साथ कोई समस्या नहीं होनी चाहिए? वैसे भी मैंने नोटपैड में फ़ाइल खोली और इसे सहेजा, फ़ाइल में कोई ï »¿नहीं था, फिर मैंने इसे फाइलज़िला का उपयोग करके फिर से हटा दिया। अभी भी एक ही मुद्दा ... – greg

+0

@greg, मैंने जवाब संपादित किया। –

+0

मुझे संदेह है कि ये वर्ण स्क्रिप्ट की विफलता का कारण हैं। अधिकांश ब्राउज़रों को पता है कि जब वे इसे देखते हैं तो यूटीएफ -8 बीओएम के साथ क्या करना है। इसके अलावा, ओपी का कहना है कि स्थानीयहोस्ट पर चलने पर वे दिखाई नहीं दे रहे हैं, जो बताते हैं कि यह केवल नोटपैड है जो उनकी व्याख्या नहीं करता है। Ergo, स्क्रिप्ट समस्या कहीं और है। – Martijn

1

मुझे लगता है कि Briedis समस्या के बारे में सही है, लेकिन मैं एक अलग समाधान सुझाव देते हैं।

जब आप फ़ाइल की सेवा है, यह के साथ परोसा जा रहा है एक Content-type

Content-Type: text/javascript;charset=US-ASCII 

की तरह?

यदि ऐसा है, तो इसके बजाय यूटीएफ -8 के एक वर्णमाला के साथ इसकी सेवा करना सुनिश्चित करें।

+0

यह उल्लेख करना बहुत अच्छा होगा कि यह कैसे करना है। –

+0

@NikanaReklawyks, आपके सर्वर के बारे में कुछ भी जानने के बिना, मैं नहीं कर सकता। –

1

मैंने अभी भी यही समस्या है, और एक फिक्स पाया है।

मार्टजिन के प्रश्न के उत्तर के रूप में, समस्या यह है कि क्लाइंट शुद्ध ASCII की अपेक्षा करते समय ये यूआरएफ -8 बीओएम वर्ण जावास्क्रिप्ट को अमान्य कर देते हैं। तो यह कहेंगे कि char 1, लाइन 1 या कुछ ऐसे में मूल रूप से फ़ाइल की शुरुआत में एक त्रुटि है क्योंकि यह कोडफाइल को स्क्रिप्ट के पहले कुछ बाइट्स में टाइपो जैसा दिखता है।

मेरे मामले में, मैं आईआईएस में एक साइट है कि एक ASP.NET अनुप्रयोग है, और यह नीचे एक आवेदन भी एक ASP.NET अनुप्रयोग है कि है। इससे web.configs को विरासत में मिलाकर कुछ जटिलताओं का कारण बन गया था, और समाधान उस टैग को रखना था जो उस बिंदु से विरासत को अस्वीकार करता था।

मैं तो पता चला कि बच्चे साइट में मेरे सारे .js कि बेवकूफ UTF-8 एन्कोडिंग प्रतीक है कि हर फ़ाइल के पहले 3 बाइट्स था के लिए एक त्रुटि फेंक दिया गया था। मैं काफी आत्मविश्वास से हूं, यह वेब.कॉन्फिग के लिए मेरे 2-स्तरीय समाधान से प्रेजिफेंडर्स में कुछ भ्रम के कारण होता है।

मेरे समाधान, तथापि .js कन्वर्ट करने के लिए था वापस शुद्ध ASCII करने के लिए फ़ाइलें, के रूप में है कि क्या आईआईएस बाहर भेज रही थी और ग्राहक उम्मीद कर रहा था। मेरे लिए, मैं एक build.bat कि प्रतियां सभी वेब फ़ाइलें, किसी भी स्रोत नियंत्रण और परियोजना फाइलों दूर करता है और उन सब को परीक्षण या उत्पादन सर्वर से कॉपी करने के लिए एक अंतिम निर्माण निर्देशिका में डालता है। मैंने सभी स्क्रिप्ट को एएससीआईआई प्रारूप में कनवर्ट करने के लिए उस स्क्रिप्ट में संशोधन किया।

यह डॉस बैच का एक संयोजन का उपयोग करता है (क्योंकि है कि मैं जहां शुरू कर दिया है) और PowerShell (क्योंकि कि एक ही रास्ता मैं और भी अधिक उपयोगिता कार्यक्रम को जोड़े बिना कन्वर्ट करने के लिए मिल गया है):

सेट DIRTOCONVERT = जो कुछ पथ आप यह चाहते के लिए सभी फ़ाइलों को कनवर्ट करने के लिए ईसीएचओ यूटीएफ -8 बीओएम चार्स ï »हटा दें? फाइलों के सामने /r% DIRTOCONVERT% %% g (* .js) में ( शक्तिशक्ति-कमांड "gc -en utf8 \" %% g \ "| आउट-फ़ाइल -en ascii। \ tmp.txt "। चाल/y \ tmp.txt" "%% जी )

ध्यान दें, कुछ लोग ऑनलाइन (StackOverflow में भी) की कोशिश करने का विचार था: प्रकार badfile.txt> goodfile.txt

लेकिन यह अभी भी यूटीएफ -8 एन्कोडिंग पर है। जाहिर है, यह ऐसा करने के लिए प्रयोग नहीं किया गया था।

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