2017-08-01 16 views
15

को बदलने पर हस्ताक्षर मैं कोणीय आवेदन जहां मैं पारित प्लस की तरह क्वेरी स्ट्रिंग में + साइन इन करना चाहते हैं:कोणीय यूआरएल प्लस अंतरिक्ष

http://localhost:3000/page?name=xyz%20manwal 
:

http://localhost:3000/page?name=xyz+manwal 

जब मैं इस URL अपने को बदलने मार रहा हूँ

जहां % 20 अंतरिक्ष का संदर्भ लें। मैं इस रूपांतरण को कैसे रोक सकता हूं?

+0

तुम क्यों कि क्या ज़रूरत है? –

+0

मैं वर्तमान में 'xyz manwal' को दिए गए यूआरएल में' xyz + manwal' जैसे नाम मान का उपयोग करना चाहता हूं। – Manwal

+0

यह सिर्फ यूआरएल है, जहां भी आप इसे पढ़ते हैं, इसे प्लस के रूप में सही ढंग से पार्स किया जाना चाहिए, आप यूआरएल में प्लस का उपयोग नहीं कर सकते हैं। पढ़ें [यह] (https://stackoverflow.com/questions/2678551/when-to-encode-space-to-plus-or-20) –

उत्तर

1

मुझे समाधान मिला है और इसे भविष्य के संदर्भ के लिए पोस्ट किया गया है। कोणीय जेएस + को %2B में परिवर्तित कर रहा था।

कोड के बाद

रोका कि:

.config([ 
    '$provide', function($provide) { 
     $provide.decorator('$browser', function($delegate) { 
     let superUrl = $delegate.url; 
     $delegate.url = (url, replace) => { 
      if(url !== undefined) { 
      return superUrl(url.replace(/\%2B/g,"+"), replace); 
      } else { 
      return superUrl().replace(/\+/g,"%2B"); 
      } 
     }; 
     return $delegate; 
     }); 
    } 
    ]) 
5

यह एक आम समस्या है। आप इसे सामान्य रूप से एप्लिकेशन/एक्स-www-form-urlencoded अनुरोध में पास कर सकते हैं। कोई अन्य अनुरोध सही ढंग से पार्स करने में सक्षम नहीं होगा। वे हमेशा% 2B के बजाय% 20 में पार्स करेंगे।

आप मैन्युअल रूप से क्वेरी पैरामीटर हेरफेर करने के लिए की आवश्यकता होगी, वहाँ 2 तरीके हैं:

  • एनकोड बेस 64 एन्कोडिंग में पैरामीटर, इस तरह से कोई विशेष वर्ण आप आवेदन तोड़ सकते हैं, लेकिन आप यह भी संभाल करने की आवश्यकता होगी प्राप्त भाग (डिकोडिंग) पर।
  • URL को मारने से पहले एक सरल समाधान होगा, सभी 2 संकेतों को% 2B के साथ बदलें। इस तरह दूसरी तरफ एक विशेष दिनचर्या की आवश्यकता के बिना, इसे सामान्य रूप से डीकोड करने में सक्षम हो जाएगा।

अधिक जानकारी के लिए आप ढेर अतिप्रवाह सवाल निम्नलिखित hthe को reffer चाहिए Android: howto parse URL String with spaces to URI object? और URL encoding the space character: + or %20?

7

यह एक आम समस्या आइए। यूआरएल द्वारा + चरित्र का उपयोग दो शब्दों को अलग करने के लिए किया जाता है। पैरामीटर मानों में + वर्ण का उपयोग करने के लिए, आपको URL के हिस्से के रूप में जोड़ने से पहले अपने पैरामीटर मानों को एन्कोड करने की आवश्यकता है। जावास्क्रिप्ट/टाइपस्क्रिप्ट उस विशिष्ट उद्देश्य के लिए encodeURI() फ़ंक्शन प्रदान करता है।

यूआरएल एन्कोडिंग वर्णों को एक प्रारूप में परिवर्तित करता है जिसे इंटरनेट पर प्रेषित किया जा सकता है। [w3Schools Reference]

यहाँ कैसे आप इस समस्या को ठीक कर सकते हैं:

let encodedName = encodeURI('xyz+manwal'); 
let encodedURI = 'http://localhost:3000/page?name='+encodedName; 

//.. OR using string interpolation 
let encodedURI = `http://localhost:3000/page?name=${ encodedName }`; 

उसी तरह, आप decodeURI() विधि का उपयोग कर मानकों को डिकोड कर सकते हैं।

let decodedValue = decodeURI(encodedValue); 
+0

यह समाधान बेहतर है, यूआरएल में उपयोग करने से पहले एन्कोडिंग अच्छी तरह से काम करता है लेकिन। ऐसे तीसरे पक्ष हैं जो लिंक उत्पन्न करते हैं, जिनमें '+' चिह्न होता है। ये यूआरएल आवेदन के पुराने संस्करण में अच्छी तरह से काम कर रहा था जिसमें 'सी #' है। लेकिन हमारे लिए (आवेदन का नया संस्करण) कोणीय में यह '+' '' '20% को तुरंत परिवर्तित करने के लिए' + 'चिह्न स्वीकार नहीं कर रहा है। – Manwal

+0

जब मैं वेबपैक के साथ कोणीय की सेवा कर रहा हूं तो इसके बदलते यूआरएल '+' '20% में बदल रहा है। मैं यूआरएल पर '+' संकेत देखना चाहता हूं। जहां apache php में अन्य सर्वर में '+' को यूआरएल में कुछ भी परिवर्तित नहीं किया जा रहा है। – Manwal

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