यूआरएल प्रतिशत-एन्कोडिंग: यूआरएल रिक्त स्थान को %20 से क्यों बदलते हैं (आरएफसी 3986 गाइड)

यूआरएल सख्त ASCII वर्ण सेट तक सीमित हैं। विशेष वर्ण - रिक्त स्थान, उच्चारण, एम्परसेंड, स्लैश - को इंटरनेट पर सुरक्षित रूप से प्रसारित करने के लिए प्रतिशत-एन्कोडेड अनुक्रमों (उदाहरण के लिए, स्पेस =% 20) के रूप में एन्कोड किया जाना चाहिए।

URL containing special characters being encoded to percent-encoded safe format

यूआरएल को विशेष कैरेक्टर एन्कोडिंग की आवश्यकता क्यों है

Comparison between RFC 3986 percent-20 and application-form-urlencoded plus encoding for spaces

यूआरएल HTTP प्रोटोकॉल का उपयोग करके नेटवर्क पर प्रसारित होते हैं। HTTP विनिर्देश (और इसके पूर्ववर्ती, इंटरनेट प्रोटोकॉल मानक) यूआरएल को यूएस-एएससीआईआई वर्णों के सबसेट तक सीमित करता है - विशेष रूप से 0x21 और 0x7E के बीच बाइट मान वाले वर्ण।

इस सीमा से बाहर के वर्ण - जिनमें रिक्त स्थान, उच्चारण वर्ण (é, ñ, ü), चीनी/जापानी/कोरियाई वर्ण और कई प्रतीक शामिल हैं - एन्कोडिंग के बिना URL में सुरक्षित नहीं हैं।

विशेष रूप से रिक्त स्थान क्यों? HTTP अनुरोध पंक्ति में विधि, यूआरएल और प्रोटोकॉल संस्करण के बीच एक सीमांकक के रूप में रिक्त स्थान का उपयोग करता है:

GET /search?q=hello world HTTP/1.1

सर्वर यूआरएल के अंत के रूप में "हैलो" और HTTP संस्करण स्ट्रिंग के अमान्य भाग के रूप में "वर्ल्ड" को देखता है। यूआरएल टूटा हुआ है।

समाधान: प्रतिशत-एन्कोडिंग (RFC 3986 में परिभाषित) असुरक्षित वर्णों को एक सुरक्षित %XX नोटेशन में परिवर्तित करता है जहां XX हेक्साडेसिमल बाइट मान है।


प्रतिशत-एन्कोडिंग कैसे काम करती है

JavaScript URL encoding API difference between encodeURI and encodeURIComponent functions

Hexadecimal ASCII byte lookup table for the eight most frequently encoded URL special characters

UTF-8 में प्रत्येक वर्ण एक से चार बाइट्स का है। प्रतिशत-एन्कोडिंग प्रत्येक बाइट को % में परिवर्तित करती है, इसके बाद दो हेक्साडेसिमल अंक:

चरित्रUTF-8 बाइटप्रतिशत-एन्कोडेड
अंतरिक्ष0x20 ]]%20
#0x23[ %23
&0x26%26
=0x3D%3D
/0x2F%2F
é0xC3 0xA9%C3%A9
中0xE4 0xB8 0xAD%E4%B8%AD

https://example.com/搜索 जैसे चीनी अक्षरों वाला एक URL बन जाता है: https://example.com/%E6%90%9C%E7%B4%A2


आरक्षित वर्ण बनाम अनारक्षित वर्ण

Reserved versus unreserved URL character set comparison showing characters that must be percent-encoded

अनारक्षित वर्ण (इन्हें कभी एन्कोड न करें): A-Z a-z 0-9 - _। ~ ये सभी URL संदर्भों में सुरक्षित हैं और इन्हें हमेशा अनएन्कोडेड दिखना चाहिए।

आरक्षित वर्ण (डेटा के रूप में उपयोग किए जाने पर एन्कोड करें, सीमांकक के रूप में नहीं): : / ? # [ ] @ ! $ & ' ( ) * + , ; = इन वर्णों का URL में विशेष अर्थ होता है। जब वे क्वेरी पैरामीटर मान में शाब्दिक डेटा के रूप में दिखाई देते हैं तो उन्हें एनकोड करें।

उदाहरण — खोज क्वेरी URL:

https://example.com/search?q=cats&dogs

यह अस्पष्ट है - प्रश्न "बिल्लियाँ" है या "बिल्लियाँ और कुत्ते"? एन्कोडिंग के साथ:

https://example.com/search?q=cats%26dogs

अब एम्परसेंड को डेटा के रूप में एन्कोड किया गया है, क्वेरी पैरामीटर विभाजक के रूप में नहीं।


ToolDolfen पर URL एन्कोडिंग और डिकोडिंग

ToolDolfen in-browser URL encoder and decoder client-side execution workflow

  1. टूलडॉल्फेन यूआरएल एनकोडर/डिकोडर खोलें। एनकोड पर क्लिक करें।

    टूल पूर्ण URL और URL घटकों (व्यक्तिगत क्वेरी पैरामीटर मान) दोनों को संभालता है। पूर्ण URL एन्कोडिंग के लिए, केवल गैर-आरक्षित वर्ण एन्कोड किए जाते हैं; घटक एन्कोडिंग के लिए, आरक्षित वर्ण भी एन्कोड किए गए हैं।

    अनुशंसित सहयोगी मार्गदर्शिकाएँ

    अपने डिजिटल वर्कफ़्लो को बढ़ाने के लिए इस विषय क्लस्टर से पूरक ट्यूटोरियल और उपयोगिताओं का अन्वेषण करें:

    HEX, RGB, और HSL: CSS और डिज़ाइन के लिए पूर्ण रंग मॉडल गाइडसत्यापित मानकों और इन-ब्राउज़र के साथ व्यावहारिक चरण-दर-चरण ट्यूटोरियल कार्यप्रवाह।मजबूत पासवर्ड का गणित: एन्ट्रॉपी, NIST दिशानिर्देश, और पासवर्ड लंबाईसत्यापित मानकों और इन-ब्राउज़र के साथ व्यावहारिक चरण-दर-चरण ट्यूटोरियल वर्कफ़्लोज़। वर्कफ़्लो।पीडीएफ फाइलों को कैसे विभाजित करें और विशिष्ट पेज रेंज कैसे निकालेंसंबंधित डेटा और मीडिया को जोड़ने वाला पूरक क्रॉस-फॉर्मेट वर्कफ़्लो उपकरण।
    अनुशंसित उपयोगिता: URL एनकोडर / डिकोडरइस वर्कफ़्लो को शून्य सर्वर अपलोड और 100% क्लाइंट-साइड के साथ अपने ब्राउज़र में लाइव निष्पादित करें गोपनीयता।
    यूआरएल को एनकोड / डिकोड करें →
    URL एन्कोडर / डिकोडर (URL Encoder) (Url Encoder Decoder)

अक्सर पूछे जाने वाले प्रश्न (FAQ)

इस कार्यप्रवाह से संबंधित सामान्य प्रश्नों के त्वरित, सत्यापित उत्तर पाएं।

यूआरएल में रिक्त स्थान के लिए %20 और + के बीच क्या अंतर है?

%20 यूआरएल में एक स्थान के लिए आरएफसी 3986 मानक प्रतिशत-एन्कोडिंग है। + चिह्न क्वेरी पैरामीटर में रिक्त स्थान के लिए एक विरासत HTML फॉर्म एन्कोडिंग कन्वेंशन (एप्लिकेशन/x-www-form-urlencoded) है। जबकि + क्वेरी स्ट्रिंग्स में व्यापक रूप से समर्थित है, %20 अधिक सार्वभौमिक रूप से सही है और URL पथों के लिए अनुशंसित है।

क्या ऐसे अक्षर हैं जिन्हें कभी भी यूआरएल में एन्कोड नहीं किया जाना चाहिए?

हाँ। अनारक्षित वर्ण (ए-जेड, ए-जेड, 0-9, -, _, ., ~) को कभी भी एन्कोड नहीं किया जाना चाहिए - वे सभी यूआरएल संदर्भों में सुरक्षित हैं। आरक्षित वर्ण (/, ?, #, &, =, @, !, $) को तब एन्कोड नहीं किया जाना चाहिए जब वे अपनी कार्यात्मक भूमिका निभा रहे हों (जैसे, / पथ खंडों को अलग करना)।

जब मैं अपने URL को विशेष वर्णों के साथ चिपकाता हूँ तो वह 404 त्रुटि क्यों दे रहा है?

कई वेब सर्वर अनएन्कोडेड विशेष वर्ण वाले यूआरएल को अस्वीकार कर देते हैं। यदि आपके URL में रिक्त स्थान, वर्गाकार कोष्ठक, घुंघराले ब्रेसिज़, या गैर-ASCII वर्ण (उच्चारण अक्षर, CJK वर्ण) हैं, तो पहले URL एनकोडर का उपयोग करके उन्हें एन्कोड करें।

Bilal Ahmad