2012-09-27 29 views
8

मैं एक लिंक इस तरह लग रही (यह थोड़ा बदसूरत है क्योंकि यह यूआरएल है)वर्ग ब्रैकेट के साथ एनकोडेड यूआरएल। क्रोम/फ़ायरफ़ॉक्स/IE में अलग व्यवहार

<a href="/items?fc%5B%5D=12345&amp;fc%5B%5D=56789&amp;utf8=%E2%9C%93">foo</a> 

थोड़ा स्पष्ट है है, यह यूआरएल इनकोडिंग और

करने के लिए अनुवाद है
<a href="/items?fc[]=12345&fc[]=56789&utf8=✓">foo</a> 

जब फ़ॉर्म सबमिट गंतव्य URL विभिन्न ब्राउज़रों में अलग दिखता है:

Firefox में, ऐसा लगता है कि वांछित दिखता है:

http://mydomain/items?fc[]=12345&fc[]=56789&utf8=✓ 

क्रोम में, वर्ग ब्रैकेट को यूआरएल-एन्कोडेड दिखाया गया है, (जो उनमें से कई का उपयोग करते समय बहुत बदसूरत और गैर पेशेवर दिखने वाले पते देता है)।

http://mydomain/items?fc%5B%5D=12345&fc%5B%5D=56789&utf8=✓ 

IE9 (और पुराने) सब कुछ पता चला है URL- एनकोडेड:

http://mydomain/items?fc%5B%5D=12345&fc%5B%5D=56789&utf8=%E2%9C%93 

मैं, "UTF8 = ..." भाग के साथ रह सकते हैं, क्योंकि यह केवल एक समस्या है IE में। लेकिन जब ब्राउज़र स्क्वायर ब्रैकेट को यूआरएल में स्पष्ट रूप से टाइप किया जाता है, तो ब्राउज़र में से कोई भी समस्या नहीं है, इसलिए मुझे समझ में नहीं आता कि क्यों क्रोम और आईई, लेकिन फ़ायरफ़ॉक्स को यूआरएल एन्कोडिंग के साथ ब्रैकेट दिखाना नहीं है।

के बाद से प्रपत्र के एचटीएमएल कोड सभी ब्राउज़रों में एक ही है, मैं लगता है कि है ब्राउज़रों के साथ क्या करना है, और साइट (इस मामले में एक साइट रूबी ऑन रेल्स)

संपादित साथ नहीं: तो करने के लिए मेरे वास्तविक प्रश्नों को स्पष्ट करें: यह अलग क्यों है? क्या कम से कम क्रोम में इसे अच्छा बनाने का कोई तरीका है? यह href = "..." में यूआरएल से बचने के द्वारा बदसूरत-तय किया जा सकता है, लेकिन मुझे लगता है कि यह यूआरएल एन्कोडिंग नियमों के खिलाफ है?

+0

तो आपकी समस्या क्या है? वह बदसूरत है? –

+0

हाँ :) मैंने अभी कुछ प्रश्नों को स्पष्ट किया है! – foolo

+0

क्या आपने POSTING परिणाम माना है? –

उत्तर

1

आप (statefulness के साथ) इन कड़ियों साझा करने के लिए मुझे लगता है आप अपने लिंक की आशंका कर रहे हैं, साझा किया जाएगा वेब पृष्ठों से जुड़ा हुआ है, कॉपी किया चाहते हैं के रूप में, ईमेल कर दी आदि

यह संभावना है कि यहां तक ​​कि ब्राउज़र के बाहर (कहें, जहां आपके लिंक अन्य पृष्ठों में कॉपी किए गए हैं, ईमेल में और इसी तरह) कि कुछ एन्कोडिंग घटित होंगी। यदि आपको उन पात्रों का उपयोग करना है तो आपको कहीं भी बदसूरत स्वीकार करना होगा।

-1

अगर मैं गलत हूं, तो कृपया मुझे सही करें, लेकिन एक तरह से मैंने इस मुद्दे के आसपास काम किया है, पोस्ट किए गए फॉर्म मानों को पकड़कर और उन्हें PHP के साथ GET में बदलकर बदलना है। तो, उदाहरण के लिए, आप एक रूप एक POST पद्धति के साथ इतना की तरह इस्तेमाल कर सकते हैं,:

<form action="" method="post"> 
<input type="text" name="fc[]" /> 
<input type="submit" value="Submit" /> 
</form> 

फिर जमा करने के बाद रूपों मूल्यों को पकड़ने, पीएचपी गए एक GET क्वेरी बनाने और उपयोगकर्ता अनुप्रेषित:

<?php 
if($_POST['fc']) 
    header('Location: ?'.urldecode(http_build_query($_POST))); 
?> 

यह पाठ्यक्रम के विशिष्ट परिदृश्यों के लिए है (और शायद ओपी के प्रश्न के दायरे से बाहर थोड़ा), लेकिन ऐसा लगता है कि यह मेरे मामले में अच्छी तरह से काम करता है।