2010-01-28 2 views
28

आपको यूआरएल एन्कोड करने की आवश्यकता क्यों है? क्या कोई अच्छा कारण है कि आपको GET डेटा में प्रत्येक स्थान को %20 पर क्यों बदलना है?आपको यूआरएल एन्कोड करने की आवश्यकता क्यों है?

+4

एक अच्छा कारण है कि मुद्रित सामग्री में यह '% 20' उपयोग करने के लिए इतना है कि कुछ बीओडी स्थानों की संख्या अनुमान करने की कोशिश कर के बिना इसे में टाइप कर सकते हैं बेहतर है! –

उत्तर

27

RFC 2936 से, खंड 2.4.3:

अंतरिक्ष चरित्र बाहर रखा गया है, क्योंकि महत्वपूर्ण रिक्त स्थान गायब हो सकता है और तुच्छ रिक्त स्थान पेश किया हो सकता है जब यूआरआई लिखित या टाईपसेट या उपचार के अधीन हैं शब्द-प्रसंस्करण प्रोग्राम। व्हाइटस्पेस का उपयोग कई संदर्भों में डिलीमिट यूआरआई में भी किया जाता है।

+3

आरएफसी – Perpetualcoder

+1

से अधिक सटीक नहीं हो सकता है, दूसरे शब्दों में, "नहीं, कोई अंतर्निहित तकनीकी कारण नहीं है लेकिन हम जानते हैं कि कार्यान्वयनकर्ता और उपयोगकर्ता दोनों बेवकूफ हैं।" यह शायद सही निर्णय था, मुख्य रूप से क्योंकि उपयोगकर्ताओं को सही जगह रखने में परेशानी होगी। –

+0

@ मैथ्यू - एक निहित तकनीकी कारण है, मेरा उत्तर देखें – Rippo

-2

ठीक है, आप ऐसा इसलिए करते हैं क्योंकि प्रत्येक अलग-अलग ब्राउज़र जानता है कि यूआरएल को बनाने वाली स्ट्रिंग कैसे एन्कोड की जाती है। अंतरिक्ष को% 20 में कनवर्ट करना, आदि यूआरएल/यूआरआई पोर्टेबल बनाता है। यह लैटिन -1 हो सकता है यह यूनिकोड हो सकता है। इसे सार्वभौमिक रूप से समझा जाने वाला कुछ सामान्य करने की आवश्यकता है। आरएफसी 3 9 86 http://tools.ietf.org/html/rfc3986#section-2.1

+1

बाइट्स के प्रतिनिधित्व को बदलने से एन्कोडिंग निर्दिष्ट नहीं होती है। कम से कम सचमुच नहीं। –

24

पर एक नज़र डालें क्योंकि कुछ पात्रों के विशेष अर्थ हैं।

उदाहरण के लिए, एक क्वेरी स्ट्रिंग में, एम्परसैंड (&) कुंजी-मूल्य जोड़े के बीच विभाजक के रूप में उपयोग किया जाता है। यदि आप उन मूल्यों में से एक में एम्पर्सेंड डालना चाहते थे, तो यह एक मूल्य के अंत और अगली कुंजी की शुरुआत के बीच विभाजक की तरह दिखेगा। तो इस तरह के विशेष पात्रों के लिए, हम प्रतिशत एन्कोडिंग का उपयोग करते हैं ताकि हम सुनिश्चित हो सकें कि डेटा को असंबद्ध रूप से एन्कोड किया गया है।

+0

लेकिन, मान लें कि आप '' '' '26 'के रूप में एन्कोड कर सकते हैं। फिर भी आपके पास स्ट्रिंग वाला मान हो सकता है जैसे '100% 26 = 22'। यह अभी भी कुंजी-वैल जोड़े के बीच विभाजक की तरह दिखता है, है ना ?? –

+2

नहीं, क्योंकि '%' विशेष अर्थ वाले पात्रों में से एक है, इसलिए उसे भी एन्कोड किया जाना चाहिए ('% 25' के रूप में)। यदि आपके पास स्ट्रिंग मान '% 26' था तो वह URL में'% 2526' के रूप में दिखाई देगा क्योंकि '%' एन्कोड किया जाएगा। स्ट्रिंग मान प्राप्त करने के लिए, आप '% 25' को'% 'के रूप में डीकोड करेंगे, जिससे आपको स्ट्रिंग'% 26' मिल जाएगी। – Jim

6
  • मूल रूप से पुराने ब्राउज़र रिक्त स्थान से भ्रमित हो सकते हैं (वास्तव में अब कोई समस्या नहीं)।
  • अब, किसी को प्रतियां यूआरएल लिंक के रूप में भेजने के लिए करता है, तो -

अरे यानी - अंतरिक्ष हाइपरलिंक तोड़ सकते हैं! एक पियानो बजाने वाली इस डरावनी बिल्ली को देखें!

http://www.mysite.com/?video=funny cat plays piano. 

देखें कि लिंक कैसे टूटता है?

अब इसे देखो:

http://www.mysite.com/?video=funny%20cat%20plays%20piano.