कभी कभी रिक्त स्थान +
हस्ताक्षर, %20
करने के लिए कुछ अन्य समय के लिए इनकोडिंग यूआरएल मिलता है। क्या अंतर है और ऐसा क्यों होना चाहिए?प्लस (+) या% 20 में स्थान को एन्कोड करने के लिए कब?
उत्तर
+
जैसे कि URL की क्वेरी भाग के रूप में केवलapplication/x-www-form-urlencoded
सामग्री में एक अंतरिक्ष मतलब है,:
http://www.example.com/path/foo+bar/path?query+name=query+value
इस URL में, पैरामीटर नाम एक स्थान के साथ query name
है और मूल्य query value
है एक स्थान के साथ है, लेकिन रास्ते में फ़ोल्डर नाम का शाब्दिक foo+bar
, नहींfoo bar
है।
%20
इन संदर्भों में से किसी में एक अंतरिक्ष एन्कोड करने के लिए एक वैध तरीका है। तो अगर आप एन्कोड URL में URL के हिस्से में शामिल करने के लिए एक स्ट्रिंग की जरूरत है, यह हमेशा %2B
साथ %20
साथ रिक्त स्थान और प्लस को बदलने के लिए सुरक्षित है। यह वही है। encodeURIComponent()
जावास्क्रिप्ट में करता है। दुर्भाग्यवश यह नहीं है कि urlencode PHP में है (rawurlencode सुरक्षित है)।
इसके अलावा HTML 4.01 Specification application/x-www-form-urlencoded
वास्तव में मैं कर रहा हूँ उलझन में, मेरा सवाल यह है कि जब ब्राउज़र पहला फॉर्म करता है, और दूसरा फोम कब होता है? –
ब्राउज़र ' 'के साथ किसी फ़ॉर्म से' query + name = query + value' पैरामीटर बना देगा। यह किसी फॉर्म से 'query% 20name' नहीं बनाएगा, लेकिन इसके बजाय इसका उपयोग करना पूरी तरह से सुरक्षित है, उदाहरण के लिए। यदि आप स्वयं को 'XMLHttpRequest' के लिए एक फॉर्म सबमिशन डाल रहे हैं। यदि आपके पास उसमें एक स्थान वाला URL है, जैसे '', तो ब्राउज़र आपके लिए ठीक करने के लिए '% 20' को एन्कोड करेगा आपकी गलती, लेकिन शायद यह सबसे अच्छा भरोसा नहीं है। – bobince
जावास्क्रिप्ट पर कौन सा फ़ंक्शन 'foo bar' को' foo + bar' 'बनाता है? – Sisir
http://www.example.com/some/path/to/resource?param1=value1
हिस्सा देखें प्रश्न चिह्न% एन्कोडिंग का उपयोग करने से पहले (ताकि अंतरिक्ष के लिए %20
), प्रश्न चिह्न के बाद आप एक अंतरिक्ष के लिए या तो %20
या +
उपयोग कर सकते हैं। यदि आपको प्रश्न चिह्न के बाद %2B
का उपयोग करने के बाद वास्तविक +
की आवश्यकता है।
किसी स्थान को एन्कोड करने के लिए '+' का उपयोग न करें। –
@ डेववेंडेइंडे क्यों नहीं? – cerberos
क्योंकि यह गलत है। यह पुराने एप्लिकेशन/एक्स-www-form-urlencoded मीडिया प्रकार का हिस्सा है जो यूआरएल पर लागू नहीं होता है। इसके अलावा, 'decodeURIComponent' इसे डीकोड नहीं करता है। –
क्या अंतर है: अन्य उत्तरों देखें।
%20
के बजाय +
का उपयोग करते समय? +
का उपयोग करें, किसी कारण से, आप URL क्वेरी स्ट्रिंग (?.....
) या हैश खंड (#....
) अधिक पठनीय बनाना चाहते हैं। उदाहरण: आप वास्तव में इस पढ़ सकते हैं:
https://www.google.se/#q=google+doesn%27t+encode+:+and+uses+%2B+instead+of+spaces (%2B
= +)
लेकिन निम्नलिखित को पढ़ने के लिए एक बहुत कठिन है: (कम से कम मेरे लिए)
मैं होगा लगता है कि +
कुछ भी तोड़ने की संभावना नहीं है, क्योंकि Google +
(उपरोक्त पहला लिंक देखें) का उपयोग करता है और उन्होंने शायद इसके बारे में सोचा होगा। मैं +
का उपयोग करने जा रहा हूं क्योंकि सिर्फ पढ़ने योग्य + Google सोचता है कि यह ठीक है।
मैं कहता हूं कि "पठनीयता" तर्क '+' के लिए सबसे अच्छा बचाव है। तर्क ग़लत है "गूगल यह होता है" https://en.wikipedia.org/wiki/Argument_from_authority – FlipMcF
@FlipMcF ग़लत तर्क-से-अधिकार विकिपीडिया पृष्ठ के बारे में "जब एक अधिकार expertise_ के अपने क्षेत्र _outside एक विषय पर उद्धृत किया जाता है है या जब प्राधिकरण का उद्धरण दिया गया है तो एक सही विशेषज्ञ नहीं है "- मुझे लगता है कि, कंप्यूटर, HTTP और यूआरएल एन्कोडिंग Google के विशेषज्ञता के क्षेत्र _within_ सामग्री है। – KajMagnus
पूरे लेख को पढ़ें, न केवल पहली पंक्ति। – FlipMcF
इसका बेहतर हमेशा नहीं के रूप में "+", 20% के रूप में रिक्त स्थान एन्कोड करने के लिए।
यह आरएफसी -1866 (एचटीएमएल 2.0 विनिर्देश) था, जो निर्दिष्ट करता है कि अंतरिक्ष वर्णों को "एप्लिकेशन/एक्स-www-form-urlencoded" सामग्री-प्रकार कुंजी-मूल्य जोड़े में "+" के रूप में एन्कोड किया जाना चाहिए। (अनुच्छेद 8.2.1 देखें। उपपरिच्छेद 1.)। एन्कोडिंग फॉर्म डेटा का यह तरीका बाद में HTML विनिर्देशों में भी दिया गया है, एप्लिकेशन/एक्स-www-form-urlencoded के बारे में प्रासंगिक पैराग्राफ देखें।
यहां यूआरएल में ऐसी स्ट्रिंग का एक उदाहरण है जहां आरएफसी -1866 एन्कोडिंग रिक्त स्थान को प्लस के रूप में अनुमति देता है: "http://example.com/over/there?name=foo+bar"।तो, केवल आरएफसी -1866 के अनुसार, "?" के बाद, रिक्त स्थान को प्लस द्वारा प्रतिस्थापित किया जा सकता है। अन्य मामलों में, रिक्त स्थान% 20 को एन्कोड किया जाना चाहिए। लेकिन चूंकि संदर्भ को निर्धारित करना मुश्किल है, इसलिए "+" के रूप में रिक्त स्थान को एन्कोड करने का यह सबसे अच्छा अभ्यास है।
मैं प्रतिशत एन्कोड करने के अलावा "अनारक्षित" RFC-3986 में परिभाषित सब चरित्र की सिफारिश करेंगे, p.2.3
unreserved = ALPHA/DIGIT/"-"/"."/"_"/"~"
तो, यहाँ जवाब सब एक सा अपूर्ण हैं। यूआरएल में किसी स्थान को एन्कोड करने के लिए '% 20' का उपयोग स्पष्ट रूप से RFC3986 में परिभाषित किया गया है, जो परिभाषित करता है कि यूआरआई कैसे बनाया गया है। एन्कोडिंग रिक्त स्थान के लिए '+' का उपयोग करने के इस विनिर्देश में कोई उल्लेख नहीं है - यदि आप पूरी तरह से इस विनिर्देशन से जाते हैं, तो एक स्थान को '% 20' के रूप में एन्कोड किया जाना चाहिए।
'+' रिक्त स्थान एन्कोड करने के लिए उपयोग करने का उल्लेख HTML विनिर्देश के विभिन्न रूपों से आता है - खंड का वर्णन सामग्री प्रकार 'आवेदन/x-www फार्म-urlencoded' में विशेष रूप से। इसका उपयोग फॉर्म डेटा पोस्ट करने के लिए किया जाता है।
अब, HTML 2.0 विशिष्टता (RFC1866) स्पष्ट रूप से कहा, खंड 8.2.2 में, कि एक GET अनुरोध के URL स्ट्रिंग की क्वेरी हिस्सा 'आवेदन/x-www फार्म-urlencoded' के रूप में एन्कोड किया जाना चाहिए। सिद्धांत रूप में, यह सुझाव देता है कि क्वेरी स्ट्रिंग में URL में '+' का उपयोग करना कानूनी है ('?' के बाद)।
लेकिन ... क्या यह वास्तव में है? याद रखें, एचटीएमएल स्वयं एक सामग्री विनिर्देश है, और क्वेरी स्ट्रिंग वाले यूआरएल का इस्तेमाल एचटीएमएल के अलावा अन्य सामग्री के साथ किया जा सकता है। इसके अलावा, जबकि HTML spec के बाद के संस्करण 'एप्लिकेशन' को 'एप्लिकेशन/एक्स-www-form-urlencoded' सामग्री में कानूनी रूप से परिभाषित करना जारी रखते हैं, वे पूरी तरह से यह कहते हुए छोड़ देते हैं कि अनुरोध क्वेरी स्ट्रिंग को उस प्रकार के रूप में परिभाषित किया गया है। वास्तव में, HTML 2.0 spec के बाद किसी भी चीज़ में क्वेरी स्ट्रिंग एन्कोडिंग के बारे में कोई भी उल्लेख नहीं है।
जो हमें प्रश्न के साथ छोड़ देता है - क्या यह मान्य है? निश्चित रूप से विरासत कोड का एक बहुत कुछ है जो क्वेरी स्ट्रिंग में '+' का समर्थन करता है, और बहुत सारे कोड जो इसे उत्पन्न करता है। तो बाधाएं अच्छी हैं यदि आप '+' का उपयोग करते हैं तो आप तोड़ नहीं पाएंगे। (और, वास्तव में, मैंने हाल ही में इस पर सभी शोध किए हैं क्योंकि मुझे एक प्रमुख साइट मिली है जो एक जीईटी क्वेरी में अंतरिक्ष के रूप में '% 20' स्वीकार करने में विफल रही है। वे वास्तव में किसी भी प्रतिशत एन्कोडेड चरित्र को डीकोड करने में असफल रहे। तो सेवा 'साथ ही प्रासंगिक हो सकता है का उपयोग कर रहे हैं।)
लेकिन विनिर्देशों का एक शुद्ध पढ़ने, HTML 2.0 बाद के संस्करणों में आगे ले जाई विनिर्देश से भाषा के बिना से, यूआरएल RFC3986, जो रिक्त स्थान का मतलब द्वारा पूरी तरह से कवर कर रहे हैं होना चाहिए '% 20' में परिवर्तित और निश्चित रूप से यह मामला होना चाहिए यदि आप किसी HTML दस्तावेज़ के अलावा किसी अन्य चीज़ का अनुरोध कर रहे हैं।
- 1. एक यूआरएल में, रिक्त स्थान% 20 या + का उपयोग करके एन्कोड किया जाना चाहिए?
- 2. क्यों यूआरएल एनकोड, या जो वर्ण एन्कोड करने के लिए
- 3. प्लस मैनिपुलेशन के लिए प्लस में प्लस और संलग्न करने के बीच क्या अंतर है?
- 4. GetHashCode() को ओवरराइड करने के लिए कब?
- 5. AJAX पोस्ट और प्लस साइन (+) - एन्कोड कैसे करें?
- 6. लिनक्स आरपीएथ में निष्पादन योग्य स्थान को एन्कोड कैसे करें?
- 7. MyLocationOverlay या LocationManager वर्तमान स्थान को अपडेट करने के लिए
- 8. इंटरनेट पते एन्कोड करने के लिए कैसे
- 9. PHP: स्ट्रिंग में रिक्त स्थान% 20 में परिवर्तित करें?
- 10. super.onPause() को कॉल करने के लिए कब?
- 11. यूआरएल को एन्कोड करने के लिए कैसे PHP
- 12. कैसे मेल करने के लिए 0 या खाली स्थान के
- 13. कोड/मॉड्यूल में कोड को विभाजित करने के लिए कब?
- 14. जावा में System.out.flush() को कॉल करने के लिए कब/क्यों
- 15. jQuery serialize प्लस
- 16. कैसे uri jsp में एक स्ट्रिंग एन्कोड करने के लिए?
- 17. जावा - कब सूचित या सूचित करने के लिए सभी?
- 18. यूटीएफ 8 डीकोड या स्ट्रिंग पर एन्कोड को लागू करने के लिए कैसे पता लगाना है?
- 19. स्ट्रीमवाइटर समस्या - 2 स्पेस हेक्स '20 20 '
- 20. गो में फ़ाइल को फ़्लश करने के लिए कब?
- 21. ओओपी: व्युत्पन्न कक्षाएं कब और कब सशर्त के साथ सुविधाओं को लागू करने के लिए?
- 22. एम्बेड करने के लिए और कब लिंक करने के लिए MongoDB.when में वीएस लिंकिंग एम्बेड करना?
- 23. जावास्क्रिप्ट एन्कोडुरिकॉम्पोनेंट और रिक्त स्थान को + प्रतीकों में परिवर्तित करना
- 24. प्रवाह को नियंत्रित करने के लिए विंडोज कमांड स्क्रिप्ट में एसक्यूएल * प्लस का उपयोग कैसे करें?
- 25. चीजों को पुनर्व्यवस्थित करने से "प्लस" को रोकना
- 26. django प्लस gevent मूल बातें कैसे गठबंधन करने के लिए?
- 27. टिप्पणी करने के लिए कोड (अन्य "कब")
- 28. आपको यूआरएल एन्कोड करने की आवश्यकता क्यों है?
- 29. जी 20 देशों के लिए अवकाश फाइल
- 30. प्रकार: BigInt (20) बनाम इंट (20)
के संभावित डुप्लिकेट [अंतरिक्ष चरित्र एन्कोडिंग यूआरएल: + या% 20?] (Http://stackoverflow.com/questions/1634271/url-encoding-the-space-character-or-20) –