मैं एक फ़ाइल नाम एन्कोड करता हूं और इसे /rest/get?name=Filename.txt
जैसे यूआरएल के हिस्से के रूप में भेजता हूं। जे एस में लिंक निर्माण के रूप में सरलफ़ायरफ़ॉक्स में encodeURIComponent() के विभिन्न व्यवहार केवल
url = '/rest/get?name=' + window.encodeURIComponent(file.name);
यह साधारण मामलों के लिए अच्छा काम करता है लेकिन कट्टर के परीक्षण के लिए मैं
你好abcABCæøåÆØÅäöüïëêîâéíáóúýñ½§!#¤%&()=`@£$€{[]}+´¨^~'-_,;.txt
URI एन्कोडिंग के नाम पर मैं एक लिंक
/rest/get?name=%E4%BD%A0%E5%A5%BDabcABC%C3%A6%C3%B8%C3%A5%C3%86%C3%98%C3%85%C3%A4%C3%B6%C3%BC%C3%AF%C3%AB%C3%AA%C3%AE%C3%A2%C3%A9%C3%AD%C3%A1%C3%B3%C3%BA%C3%BD%C3%B1%C2%BD%C2%A7%3F%3FabcABC%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD!%23%C2%A4%25%26()%3D%60%40%C2%A3%24%E2%82%AC%7B%5B%5D%7D%2B%C2%B4%C2%A8%5E~%27-_%2C%3B.txt
प्राप्त करने की उम्मीद एक फ़ाइल का उपयोग है
और मुझे यह मिल गया। निर्मित लिंक आईई और क्रोम के नवीनतम संस्करणों में ठीक काम करता है लेकिन फ़ायरफ़ॉक्स में विफल रहता है। कुछ जांच के बाद मुझे पता चला है कि फ़ायरफ़ॉक्स encodeURIcomponent
में अलग-अलग काम करता है। यहाँ Firefox में वास्तविक परिणाम है:
/rest/get?name=%3F%3FabcABC%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD!%23%EF%BF%BD%25%26%28%29%3D%60%40%EF%BF%BD%24%3F{[]}%2B%EF%BF%BD%EF%BF%BD^~%27-_%2C%3B.txt
दृश्य तुलना (क्रोम लिंक बाईं तरफ है और Firefox लिंक सही पर है):
मैं भी कॉपी और पेस्ट करने के लिए कोशिश की है फ़ायरफ़ॉक्स में वैध लिंक (क्रोम में निर्मित) और यह ठीक काम करता है।
मुझे अलग-अलग परिणाम क्यों मिलते हैं?
है और इसका एक बग के साथ ̶ ̶e̶n̶c̶o̶d̶e̶U̶R̶I̶c̶o̶m̶p̶o̶n̶e̶n̶t̶(̶)̶
̶ में Firefox? ̶
फ़ायरफ़ॉक्स encodeURIComponent()
में एक अलग एन्कोडिंग का उपयोग करता है?
यूपीडी। मुझे समान प्रश्न मिल गए हैं (encodeURIComponent behaves differently in browsers for China as location [搜索] और encodeURIComponent difference with browsers and ä-ö-å characters [äöå]), बिना जवाब के दोनों।
UPD.2 आगे की जांच से पता चला है कि निम्न वर्णों अलग एन्कोड और उत्पन्न कर रहे हैं सर्वर पर अपवाद 'फ़ाइल नहीं मिली':
- 你好
- æøåÆØÅäöüïëêîâéíáóúýñ
- ½§¤
- £ €
मुझे लगता है कि करने के लिए यह है कि जा रहा हूँ या तो फ़ायर्फ़ॉक्स फ़ॉन्ट नक्शा अलग है, या कि जो कुछ भी एफएफ एक जावास्क्रिप्ट दुभाषिया के लिए उपयोग करता है बाहर है सनकी – durbnpoisn
'% 3F''? 'है, ऐसा लगता है कि यह यूनिकोड को सही ढंग से समझ नहीं रहा है। –
@ जेम्स टॉर्प हाँ, आप सही हैं। लेकिन जैसा कि आप देख सकते हैं कि यूआरएल का दूसरा भाग अलग-अलग एन्कोड किया गया है और अगर मैं शुरुआत से '你好' को हटा देता हूं तो यह अभी भी विफल रहता है। – naXa