2011-01-05 10 views
9
Uri uri = new Uri(redirectionUrl); 
NameValueCollection col = HttpUtility.ParseQueryString(uri.Query) 

uri.Query पहले से ही डीकोड किया गया है - तो क्या कोई तरीका है कि मैं ParseQueryString इसे फिर से डीकोड कर सकता हूं?विशेष वर्ण डीकोड किए बिना HttpUtility.ParseQueryString

इसके अलावा - क्या किसी भी घटक को संशोधित करने के बिना के बिना Uri से नाम मान संग्रह पुनर्प्राप्त करने का कोई और तरीका है?

उत्तर

6

uri.Query को ParseQueryString पर जाने से पहले एन्कोडिंग मेरे सिर पर पहली बात है।

अद्यतन

बस परावर्तक के साथ की जाँच ParseQueryString विधि: यह मानता है कि क्वेरी स्ट्रिंग एन्कोड किया गया है और आप इसके साथ कुछ नहीं कर सकते ... ओह। तो मुझे लगता है कि आपको इसे मैन्युअल रूप से पार्स करने की ज़रूरत है (वेब ​​पर बहुत से उपयोग में उपयोग करने योग्य एल्गोरिदम हैं)।

वैकल्पिक रूप से आप ParseQueryString विधि पर जाने से पहले अपनी क्वेरी स्ट्रिंग को सही ढंग से (खाता परिवर्तनीय नाम और सभी विशेष वर्णों को लेना) को एन्कोड कर सकते हैं।

- पावेल

+0

मैं uri.Query के रूप में नहीं कर सकता परिवर्तक नाम और? = –

+0

मैंने अपना जवाब अपडेट कर लिया है। उम्मीद है कि यह आपको सही निर्णय लेने में मदद करेगा। – volpav

-3

मुझे एक ही समस्या का सामना करना पड़ा है। समाधान दूसरा पैरामीटर जोड़ रहा है - एन्कोडिंग। यह सीम करता है कि अगर आप यूटीएफ 8 एन्कोडिंग सेट करते हैं तो सबकुछ काम करता है।

NameValueCollection col = HttpUtility.ParseQueryString(uri.Query, Encoding.UTF8) 
+3

यूटीएफ 8 एन्कोडिंग डिफ़ॉल्ट रूप से उपयोग किया जाता है, इसलिए इसे स्पष्ट रूप से कोई प्रभाव नहीं पड़ता है: http://msdn.microsoft.com/en-us/library/ms150046(v=vs.110).aspx –

+0

इस विकल्प में नहीं है कोई प्रभाव – jitidea

+0

दुर्भाग्य से इसका कोई प्रभाव नहीं पड़ता है। ParseQueryString को पास करने से पहले आपको अपनी क्वेरी स्ट्रिंग को ठीक से एन्कोड करना चाहिए। –

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