URL एन्कोडिंग

कोड कोड
यूआरएल इनपुट
0 chars

मुफ्त ऑनलाइन URL एन्कोड/डिकोड टूल। encodeURIComponent/encodeURI/RFC 3986 4 मोड का समर्थन करता है, एन्कोड किए गए वर्णों को रीयल-टाइम में हाइलाइट करता है, बहु-पंक्ति बैच मोड, केवल पैरामीटर मान एन्कोड करने के लिए Query Only। ब्राउज़र में स्थानीय प्रसंस्करण, शून्य डेटा अपलोड।

संबंधित सुझाव

URL एन्कोडिंग क्या है?

URL एन्कोडिंग (प्रतिशत-एन्कोडिंग) URL में असुरक्षित वर्णों को %XX प्रारूप में बदलने की प्रक्रिया है। URL में केवल ASCII वर्णों का एक छोटा उपसमुच्चय हो सकता है (अक्षर, संख्याएं, -_.~), अन्य सभी वर्ण (चीनी, स्पेस, विशेष वर्ण सहित) URL में भेजने से पहले एन्कोड किए जाने चाहिए। उदाहरण के लिए, स्पेस %20 बन जाता है, चीनी वर्ण '中' %E4%B8%AD बन जाता है।

**encodeURIComponent vs encodeURI**: ये दो सबसे अधिक उपयोग की जाने वाली एन्कोडिंग फ़ंक्शन हैं। encodeURIComponent अधिक अच्छी तरह से एन्कोड करता है, जिसमें &, =, ? जैसे पैरामीटर विभाजक शामिल हैं, इसलिए यह व्यक्तिगत पैरामीटर मानों को एन्कोड करने के लिए उपयुक्त है। encodeURI URL संरचना (स्कीम://, पथ, /, ?, #) को संरक्षित करता है, इसलिए यह पूर्ण URL को एन्कोड करने के लिए उपयुक्त है। गलत उपयोग से पैरामीटर पार्सिंग त्रुटियां होती हैं।

**RFC 3986 vs पुराने मानक**: RFC 3986 टिल्ड ~ को एक सुरक्षित वर्ण मानता है जिसे एन्कोड करने की आवश्यकता नहीं है, जबकि प्रारंभिक मानक इसे %7E के रूप में एन्कोड करते हैं। RFC 3986 का उपयोग अनावश्यक एस्केपिंग को कम करता है, URL पठनीयता में सुधार करता है, और कुछ सर्वरों पर %7E पार्सिंग समस्याओं से बचता है।

**Query Only मोड**: उपयोग किया जाता है जब आप कुंजी नाम, बराबर चिह्न और & वर्णों को बदले बिना URL क्वेरी स्ट्रिंग में केवल पैरामीटर मानों को एन्कोड करना चाहते हैं। उदाहरण के लिए, ?name=张三 को ?name=%E5%BC%A0%E4%B8%89 के रूप में एन्कोड किया जाता है, जिससे कुंजी नाम पठनीय रहते हैं और केवल मान एन्कोड किए जाते हैं।

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

उपयोग के मामले

  • API पैरामीटर डीबगिंग: इंटरफेस हस्ताक्षर बेमेल समस्याओं को हल करने के लिए encodeURIComponent और encodeURI के आउटपुट की तुलना करना
  • लॉग डिकोडिंग: पठनीय पाठ को पुनर्स्थापित करने के लिए लॉग में URL-एन्कोडेड सामग्री को बैच में डिकोड करना
  • URL निर्माण: Query Only मोड कुंजी नामों को संरक्षित करता है और केवल मानों को एन्कोड करता है, मैन्युअल स्ट्रिंग संयोजन में प्रारूप त्रुटियों से बचता है
  • फ्रंटएंड विकास: हाइलाइटिंग यह समझने में मदद करती है कि कौन से वर्ण एस्केप किए जाते हैं, पेज रीडायरेक्ट डीबग करने के लिए उपयोगी
  • डेटा माइग्रेशन: नए प्रारूप में कनवर्ट करने के लिए पुराने सिस्टम से निर्यात किए गए URL-एन्कोडेड डेटा को बैच में संसाधित करना

उपयोग कैसे करें

  1. एन्कोड/डिकोड करने के लिए URL या टेक्स्ट दर्ज करें या पेस्ट करें
  2. एन्कोडिंग दिशा (एन्कोड करें/डिकोड करें) और मोड चुनें (Component / URI / full / RFC 3986)
  3. बहु-पंक्ति डेटा के लिए बैच मोड या केवल पैरामीटर मान एन्कोड करने के लिए Query Only चालू करें
  4. हाइलाइट किए गए परिणाम की जांच करें और API कॉल या URL निर्माण में उपयोग के लिए एन्कोडेड स्ट्रिंग को कॉपी करें

विशेषताएं

  • चार एन्कोडिंग मोड: एक क्लिक से encodeURIComponent / encodeURI / full / RFC 3986 के बीच स्विच करें, रीयल-टाइम में आउटपुट अंतर की तुलना करें
  • एन्कोडिंग हाइलाइटिंग: रीयल-टाइम में एस्केप किए गए %XX वर्णों को हाइलाइट करता है, एम्बर रंग का चिह्नांकन एन्कोडिंग परिणामों को तुरंत दृश्यमान बनाता है
  • बैच मोड: बहु-पंक्ति बैच एन्कोडिंग/डिकोडिंग का समर्थन करता है, प्रत्येक पंक्ति स्वतंत्र रूप से संसाधित होती है, लॉग या बल्क डेटा के लिए आदर्श
  • Query Only मोड: URL के केवल पैरामीटर मान भाग को एन्कोड करता है (बराबर चिह्न के बाद), कुंजी नाम, वर्ण और पथ संरचना को अछूता छोड़ता है
  • रीयल-टाइम डिबाउंस: 300ms के भीतर स्वचालित रूप से एन्कोड/डिकोड करता है, बटन क्लिक करने की आवश्यकता नहीं, टाइप करते समय परिणाम दिखाई देते हैं
  • वर्ण गणना: रीयल-टाइम में दर्ज किए गए वर्णों की संख्या प्रदर्शित करता है, API पैरामीटर लंबाई सीमाओं की जांच के लिए उपयोगी

कोड उदाहरण

JavaScript में URL एन्कोडिंग/डिकोडिंग

// encodeURIComponent: व्यक्तिगत पैरामीटर मानों को एन्कोड करता है (सबसे अधिक उपयोग किया जाता है)
const param = encodeURIComponent('张三&李四');
console.log(param); // %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B

// encodeURI: पूर्ण URL को एन्कोड करता है (संरचनात्मक वर्णों को संरक्षित करता है :/?#&=)
const url = encodeURI('https://example.com/search?q=नमस्ते दुनिया');
console.log(url);

// डिकोडिंग
const decoded = decodeURIComponent(param);
console.log(decoded); // 张三&李四

// RFC 3986 संगत (~ एन्कोड नहीं किया गया)
function rfc3986Encode(str) {
  return encodeURIComponent(str).replace(/[!'()*]/g, c => '%' + c.charCodeAt(0).toString(16).toUpperCase());
}

// URLSearchParams API (आधुनिक तरीका, स्वचालित एन्कोडिंग)
const params = new URLSearchParams({ name: '张三', city: '北京' });
console.log(params.toString());
// name=%E5%BC%A0%E4%B8%89&city=%E5%8C%97%E4%BA%AC

Python में URL एन्कोडिंग/डिकोडिंग

from urllib.parse import quote, unquote, urlencode, quote_plus

# quote: encodeURIComponent के समान
encoded = quote('张三&李四')
print(encoded)  # %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B

# RFC 3986 मोड (~ डिफ़ॉल्ट रूप से एन्कोड नहीं किया गया)
print(quote('hello~world'))  # hello~world

# quote_plus: स्पेस + के रूप में एन्कोड किए जाते हैं (फॉर्म प्रारूप)
print(quote_plus('hello world'))  # hello+world

# डिकोडिंग
print(unquote(encoded))  # 张三&李四

# urlencode: क्वेरी स्ट्रिंग बनाना
def rfc3986Encode(str) {
params = urlencode({'name': '张三', 'city': '北京'})
print(params)
# name=%E5%BC%A0%E4%B8%89&city=%E5%8C%97%E4%BA%AC

Java में URL एन्कोडिंग/डिकोडिंग

import java.net.URLEncoder;
import java.net.URLDecoder;
import java.net.URI;
import java.nio.charset.StandardCharsets;

public class URLEncodeExample {
    public static void main(String[] args) throws Exception {
        // URL एन्कोडिंग (URLEncoder - फॉर्म प्रारूप, स्पेस + बन जाते हैं)
        String encoded = URLEncoder.encode("张三&李四", "UTF-8");
        System.out.println(encoded);
        // %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B

        // डिकोडिंग
        String decoded = URLDecoder.decode(encoded, "UTF-8");
        System.out.println(decoded); // 张三&李四

        // पूर्ण URL बनाना (URI क्लास स्वचालित रूप से एन्कोडिंग संभालती है)
        URI uri = new URI("https", "example.com", "/search", "q=नमस्ते", null);
        System.out.println(uri.toASCIIString());
    }
}

सामान्य प्रश्न

encodeURIComponent और encodeURI में क्या अंतर है?

encodeURIComponent सभी असुरक्षित वर्णों को एन्कोड करता है, जिनमें &, =, ?, आदि शामिल हैं, इसलिए यह व्यक्तिगत पैरामीटर मानों को एन्कोड करने के लिए उपयुक्त है। encodeURI URL के संरचनात्मक वर्णों (:, /, ?, #, आदि) को संरक्षित करता है, इसलिए यह पूर्ण URL को एन्कोड करने के लिए उपयुक्त है। उपयोग परिदृश्य: पैरामीटर मानों के लिए Component, पूर्ण URL के लिए URI।

RFC 3986 और मानक एन्कोडिंग में क्या अंतर है?

RFC 3986 अद्यतन URL मानक संस्करण है, जो टिल्ड ~ को एक सुरक्षित वर्ण मानता है जिसे एन्कोड करने की आवश्यकता नहीं है, जबकि पुराने मानक इसे %7E के रूप में एन्कोड करते हैं। RFC 3986 का उपयोग कुछ सर्वरों पर पार्सिंग अंतर से बच सकता है और बेहतर संगतता प्रदान कर सकता है।

Query Only मोड किन परिदृश्यों में उपयोग किया जाता है?

उपयोग किया जाता है जब आपके पास ?name=张三&city=北京 जैसी URL क्वेरी स्ट्रिंग हो और आप कुंजी नामों और वर्णों को बदले बिना केवल पैरामीटर मानों को एन्कोड करना चाहते हों। इस मामले में, name और city अपरिवर्तित रहते हैं, और मान %E5%BC%A0%E4%B8%89 और %E5%8C%97%E4%BA%AC के रूप में एन्कोड किए जाते हैं।

स्पेस को + या %20 के रूप में एन्कोड किया जाना चाहिए?

application/x-www-form-urlencoded प्रारूप (HTML फॉर्म सबमिशन) में, स्पेस + के रूप में एन्कोड किए जाते हैं। लेकिन URL पथों में और encodeURIComponent में, स्पेस हमेशा %20 के रूप में एन्कोड किए जाते हैं। यह टूल डिफ़ॉल्ट रूप से %20 प्रारूप का उपयोग करता है।

अलग-अलग टूल समान चीनी वर्ण के लिए अलग-अलग परिणाम क्यों देते हैं?

यह वर्ण एन्कोडिंग विधि पर निर्भर करता है। यह टूल UTF-8 एन्कोडिंग (वेब मानक) का उपयोग करता है, चीनी वर्ण '中' %E4%B8%AD के रूप में एन्कोड किया जाता है। यदि अन्य टूल GBK एन्कोडिंग का उपयोग करते हैं, तो परिणाम %D6%D0 होगा। वेब URL के लिए हमेशा UTF-8 का उपयोग करने की सिफारिश की जाती है।

एन्कोडिंग हाइलाइटिंग किस लिए है?

%XX प्रारूप (जैसे स्पेस→%20) में एन्कोड किए गए वर्णों को रीयल-टाइम में हाइलाइट करता है, एन्कोडिंग नियमों को समझने और समस्याओं को हल करने में मदद करता है। अक्षर और संख्याएं सुरक्षित वर्ण हैं जो एन्कोड नहीं किए जाते, केवल चीनी और विशेष वर्ण एन्कोड किए जाते हैं।

क्या % वर्ण स्वयं एन्कोड किया जाना चाहिए?

हां। %, URL एन्कोडिंग में एस्केप का प्रारंभिक वर्ण है। यदि एक शाब्दिक % पैरामीटर मान में प्रकट होता है, तो इसे %25 के रूप में एन्कोड किया जाना चाहिए; अन्यथा, इसे गलती से एन्कोडिंग उपसर्ग के रूप में व्याख्यायित किया जाएगा, जिससे पार्सिंग त्रुटियां होंगी। उदाहरण के लिए, 100% को 100%25 के रूप में एन्कोड किया जाना चाहिए।

शब्दकोश

प्रतिशत-एन्कोडिंग (Percent-encoding)
URL एन्कोडिंग का आधिकारिक नाम, एक एन्कोडिंग विधि जो वर्णों को % और उसके बाद दो हेक्साडेसिमल अंकों के साथ दर्शाती है। उदाहरण के लिए, स्पेस %20 बन जाता है, चीनी वर्ण '中' %E4%B8%AD बन जाता है।विकिपीडिया - Percent-encoding
encodeURIComponent
जावास्क्रिप्ट बिल्ट-इन फ़ंक्शन, A-Z a-z 0-9 - _ . ! ~ * ' ( ) को छोड़कर सभी वर्णों को एन्कोड करता है। व्यक्तिगत क्वेरी पैरामीटर मानों को एन्कोड करने के लिए सबसे अधिक उपयोग किया जाता है।
encodeURI
जावास्क्रिप्ट बिल्ट-इन फ़ंक्शन, URL के संरचनात्मक वर्णों (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) को संरक्षित करता है और केवल उन वर्णों को एन्कोड करता है जिन्हें वास्तव में एन्कोड करने की आवश्यकता होती है। पूर्ण URL एन्कोड करने के लिए उपयोग किया जाता है।
RFC 3986
URI सामान्य सिंटैक्स के लिए नवीनतम IETF मानक (2005), URL एन्कोडिंग नियमों को परिभाषित करता है और टिल्ड ~ को गैर-आरक्षित वर्ण के रूप में वर्गीकृत करता है (एन्कोडिंग की आवश्यकता नहीं)। पुराने RFC 2396 और RFC 1738 को प्रतिस्थापित करता है।RFC 3986
आरक्षित वर्ण (Reserved Characters)
URL में विशेष अर्थ वाले वर्ण, जैसे : / ? # [ ] @ ! $ & ' ( ) * + , ; =। इन वर्णों को डेटा के रूप में उपयोग किए जाने पर एन्कोड किया जाना चाहिए, लेकिन उनकी संरचनात्मक स्थितियों में नहीं।
गैर-आरक्षित वर्ण (Unreserved Characters)
सुरक्षित वर्ण जो बिना एन्कोडिंग के URL के किसी भी स्थान पर उपयोग किए जा सकते हैं, जिनमें A-Z, a-z, 0-9, -, _, ., ~ शामिल हैं (RFC 3986 के अनुसार)।
Query String
URL का ? के बाद का भाग, जो & द्वारा अलग किए गए key=value जोड़े से मिलकर बनता है। उदाहरण के लिए, ?name=张三&age=20 में name=张三 और age=20 दो पैरामीटर हैं।
URLSearchParams
आधुनिक ब्राउज़रों द्वारा प्रदान किया गया API जो URL क्वेरी स्ट्रिंग को आसानी से बनाने और पार्स करने के लिए है, स्वचालित एन्कोडिंग और डिकोडिंग के साथ। मैन्युअल स्ट्रिंग संयोजन से अधिक सुरक्षित और विश्वसनीय।
application/x-www-form-urlencoded
HTML फॉर्म के लिए डिफ़ॉल्ट सबमिशन प्रारूप, जहां स्पेस %20 के बजाय + के रूप में एन्कोड किए जाते हैं, जो encodeURIComponent से थोड़ा अलग है। सर्वर फ्रेमवर्क आमतौर पर दोनों प्रारूपों को स्वचालित रूप से संभालते हैं।
UTF-8 एन्कोडिंग
वेब के लिए मानक वर्ण एन्कोडिंग विधि। URL एन्कोडिंग करते समय, गैर-ASCII वर्ण (जैसे चीनी, इमोजी) पहले UTF-8 बाइट अनुक्रम में परिवर्तित किए जाते हैं, फिर प्रत्येक बाइट को %XX प्रारूप में एन्कोड किया जाता है।

4 एन्कोडिंग मोड में एस्केप किए गए वर्णों की तुलना

वर्णअर्थencodeURIComponentencodeURIRFC 3986
स्पेसस्पेस%20%20%20
!विस्मयादिबोधक चिह्न%21!%21
#फ्रैगमेंट पहचानकर्ता%23#%23
$डॉलर चिह्न%24$%24
&पैरामीटर विभाजक%26&%26
'एकल उद्धरण%27'%27
(बायां कोष्ठक%28(%28
)दायां कोष्ठक%29)%29
*तारांकन%2A*%2A
+धन चिह्न%2B+%2B
,अल्पविराम%2C,%2C
/पथ विभाजक%2F/%2F
:कोलन%3A:%3A
;अर्धविराम%3B;%3B
=बराबर चिह्न%3D=%3D
?प्रश्न चिह्न%3F?%3F
@एट चिह्न%40@%40
~टिल्ड%7E%7E~

सामान्य आरक्षित URL वर्ण त्वरित संदर्भ

एन्कोड किया हुआमूल वर्णURL में उपयोग
%20(स्पेस)स्पेस
%21!उप-विभाजक
%23#फ्रैगमेंट पहचानकर्ता (हैश)
%25%एस्केप वर्ण स्वयं
%26&क्वेरी पैरामीटर विभाजक
%2B+धन चिह्न / फॉर्म में स्पेस
%2F/पथ विभाजक
%3A:स्कीम विभाजक
%3D=कुंजी-मान विभाजक
%3F?क्वेरी स्ट्रिंग प्रारंभ
%40@ऑथ/ईमेल विभाजक
%5B[ऐरे पैरामीटर (RFC 3986)

Authoritative References