PowerShell
URL एनकोड / डिकोड
खोज…
टिप्पणियों
डिकोड URL उदाहरणों में उपयोग की जाने वाली नियमित अभिव्यक्ति को RFC 2396 से लिया गया , परिशिष्ट B: एक URI संदर्भ को एक नियमित अभिव्यक्ति के साथ पार्स करना ; पद के लिए, यहाँ एक उद्धरण है:
निम्न घटक एक URI संदर्भ को उसके घटकों में तोड़ने-तोड़ने के लिए नियमित अभिव्यक्ति है।
^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))? 12 3 4 5 6 7 8 9
ऊपर की दूसरी पंक्ति में संख्या केवल पठनीयता की सहायता के लिए है; वे प्रत्येक उपसंचाई (यानी, प्रत्येक युग्मित कोष्ठक) के लिए संदर्भ बिंदुओं को इंगित करते हैं। हम $ के रूप में सब-डेप्रिसिएशन के लिए मिलान किए गए मूल्य का उल्लेख करते हैं। उदाहरण के लिए, उपरोक्त अभिव्यक्ति का मिलान करना
http://www.ics.uci.edu/pub/ietf/uri/#Related
निम्नलिखित सबडिप्रेशन मैच में परिणाम:
$1 = http: $2 = http $3 = //www.ics.uci.edu $4 = www.ics.uci.edu $5 = /pub/ietf/uri/ $6 = <undefined> $7 = <undefined> $8 = #Related $9 = Related
त्वरित प्रारंभ: एन्कोडिंग
$url1 = [uri]::EscapeDataString("http://test.com?test=my value")
# url1: http%3A%2F%2Ftest.com%3Ftest%3Dmy%20value
$url2 = [uri]::EscapeUriString("http://test.com?test=my value")
# url2: http://test.com?test=my%20value
# HttpUtility requires at least .NET 1.1 to be installed.
$url3 = [System.Web.HttpUtility]::UrlEncode("http://test.com?test=my value")
# url3: http%3a%2f%2ftest.com%3ftest%3dmy+value
नोट: HTTPUtility पर अधिक जानकारी ।
त्वरित शुरुआत: डिकोडिंग
नोट: ये उदाहरण क्विक स्टार्ट में बनाए गए चर का उपयोग करते हैं : ऊपर दिए गए एन्कोडिंग अनुभाग।
# url1: http%3A%2F%2Ftest.com%3Ftest%3Dmy%20value
[uri]::UnescapeDataString($url1)
# Returns: http://test.com?test=my value
# url2: http://test.com?test=my%20value
[uri]::UnescapeDataString($url2)
# Returns: http://test.com?test=my value
# url3: http%3a%2f%2ftest.com%3ftest%3dmy+value
[uri]::UnescapeDataString($url3)
# Returns: http://test.com?test=my+value
# Note: There is no `[uri]::UnescapeUriString()`;
# which makes sense since the `[uri]::UnescapeDataString()`
# function handles everything it would handle plus more.
# HttpUtility requires at least .NET 1.1 to be installed.
# url1: http%3A%2F%2Ftest.com%3Ftest%3Dmy%20value
[System.Web.HttpUtility]::UrlDecode($url1)
# Returns: http://test.com?test=my value
# HttpUtility requires at least .NET 1.1 to be installed.
# url2: http://test.com?test=my%20value
[System.Web.HttpUtility]::UrlDecode($url2)
# Returns: http://test.com?test=my value
# HttpUtility requires at least .NET 1.1 to be installed.
# url3: http%3a%2f%2ftest.com%3ftest%3dmy+value
[System.Web.HttpUtility]::UrlDecode($url3)
# Returns: http://test.com?test=my value
नोट: HTTPUtility पर अधिक जानकारी ।
एनकोड क्वेरी स्ट्रिंग के साथ `[uri] :: EscapeDataString ()`
$scheme = 'https'
$url_format = '{0}://example.vertigion.com/foos?{1}'
$qs_data = @{
'foo1'='bar1';
'foo2'= 'complex;/?:@&=+$, bar''"';
'complex;/?:@&=+$, foo''"'='bar2';
}
[System.Collections.ArrayList] $qs_array = @()
foreach ($qs in $qs_data.GetEnumerator()) {
$qs_key = [uri]::EscapeDataString($qs.Name)
$qs_value = [uri]::EscapeDataString($qs.Value)
$qs_array.Add("${qs_key}=${qs_value}") | Out-Null
}
$url = $url_format -f @([uri]::"UriScheme${scheme}", ($qs_array -join '&'))
[uri]::EscapeDataString()
, आप देखेंगे कि एपोस्ट्रोफ़ ( '
) को इनकोड नहीं किया गया था:
https://example.vertigion.com/foos ? foo2 = जटिल% 3B% 2F% 3F% 3A% 40% 26% 3D% 2B% 24% 2C% 20bar '% 22 और जटिल% 3B% 2F% 3F% 3A% 40% 26% 3D 2%% 24% 2C% 20foo '% 22 = bar2 और foo1 = bar1
एनकोड क्वेरी स्ट्रिंग के साथ `[System.Web.HttpUtility] :: UrlEncode ()`
$scheme = 'https'
$url_format = '{0}://example.vertigion.com/foos?{1}'
$qs_data = @{
'foo1'='bar1';
'foo2'= 'complex;/?:@&=+$, bar''"';
'complex;/?:@&=+$, foo''"'='bar2';
}
[System.Collections.ArrayList] $qs_array = @()
foreach ($qs in $qs_data.GetEnumerator()) {
$qs_key = [System.Web.HttpUtility]::UrlEncode($qs.Name)
$qs_value = [System.Web.HttpUtility]::UrlEncode($qs.Value)
$qs_array.Add("${qs_key}=${qs_value}") | Out-Null
}
$url = $url_format -f @([uri]::"UriScheme${scheme}", ($qs_array -join '&'))
[System.Web.HttpUtility]::UrlEncode()
, आप देखेंगे कि रिक्त स्थान %20
बजाय धन चिह्न ( +
) में बदल गए हैं:
https://example.vertigion.com/foos ? foo2 = जटिल% 3b% 2f% 3f% 3a% 40% 26% 3D% 2b% 24% 2c + बार% 27% 22% और जटिल% 3b% 2f% 3f% 3a% 40% 26% 3D% 2b% 24% 2c + foo% 27% 22 = bar2 और foo1 = bar1
Decode URL को `[uri] :: UnescapeDataString ()` के साथ
[uri]::EscapeDataString()
साथ एन्कोडेड
सबसे पहले, हम उपरोक्त उदाहरण में URL और क्वेरी स्ट्रिंग [uri]::EscapeDataString()
साथ इनकोड करेंगे।
https://example.vertigion.com/foos ? foo2 = जटिल% 3B% 2F% 3F% 3A% 40% 26% 3D% 2B% 24% 2C% 20bar '% 22 और जटिल% 3B% 2F% 3F% 3A% 40% 26% 3D 2%% 24% 2C% 20foo '% 22 = bar2 और foo1 = bar1
$url = 'https://example.vertigion.com/foos?foo2=complex%3B%2F%3F%3A%40%26%3D%2B%24%2C%20bar''%22&complex%3B%2F%3F%3A%40%26%3D%2B%24%2C%20foo''%22=bar2&foo1=bar1'
$url_parts_regex = '^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?' # See Remarks
if ($url -match $url_parts_regex) {
$url_parts = @{
'Scheme' = $Matches[2];
'Server' = $Matches[4];
'Path' = $Matches[5];
'QueryString' = $Matches[7];
'QueryStringParts' = @{}
}
foreach ($qs in $query_string.Split('&')) {
$qs_key, $qs_value = $qs.Split('=')
$url_parts.QueryStringParts.Add(
[uri]::UnescapeDataString($qs_key),
[uri]::UnescapeDataString($qs_value)
) | Out-Null
}
} else {
Throw [System.Management.Automation.ParameterBindingException] "Invalid URL Supplied"
}
यह आपको वापस [hashtable]$url_parts
; जो बराबर (नोट: जटिल भागों में रिक्त स्थान रिक्त स्थान हैं):
PS > $url_parts
Name Value
---- -----
Scheme https
Path /foos
Server example.vertigion.com
QueryString foo2=complex%3B%2F%3F%3A%40%26%3D%2B%24%2C%20bar'%22&complex%3B%2F%3F%3A%40%26%3D%2B%24%2C%20foo'%22=bar2&foo1=bar1
QueryStringParts {foo2, complex;/?:@&=+$, foo'", foo1}
PS > $url_parts.QueryStringParts
Name Value
---- -----
foo2 complex;/?:@&=+$, bar'"
complex;/?:@&=+$, foo'" bar2
foo1 bar1
[System.Web.HttpUtility]::UrlEncode()
साथ एन्कोडेड [System.Web.HttpUtility]::UrlEncode()
अब, हम URL और क्वेरी स्ट्रिंग को कूटबद्ध करेंगे [System.Web.HttpUtility]::UrlEncode()
उपरोक्त उदाहरण में:
https://example.vertigion.com/foos ? foo2 = जटिल% 3b% 2f% 3f% 3a% 40% 26% 3D% 2b% 24% 2c + बार% 27% 22% और जटिल% 3b% 2f% 3f% 3a% 40% 26% 3D% 2b% 24% 2c + foo% 27% 22 = bar2 और foo1 = bar1
$url = 'https://example.vertigion.com/foos?foo2=complex%3b%2f%3f%3a%40%26%3d%2b%24%2c+bar%27%22&complex%3b%2f%3f%3a%40%26%3d%2b%24%2c+foo%27%22=bar2&foo1=bar1'
$url_parts_regex = '^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?' # See Remarks
if ($url -match $url_parts_regex) {
$url_parts = @{
'Scheme' = $Matches[2];
'Server' = $Matches[4];
'Path' = $Matches[5];
'QueryString' = $Matches[7];
'QueryStringParts' = @{}
}
foreach ($qs in $query_string.Split('&')) {
$qs_key, $qs_value = $qs.Split('=')
$url_parts.QueryStringParts.Add(
[uri]::UnescapeDataString($qs_key),
[uri]::UnescapeDataString($qs_value)
) | Out-Null
}
} else {
Throw [System.Management.Automation.ParameterBindingException] "Invalid URL Supplied"
}
इससे आप वापस देता है [hashtable]$url_parts
है, जो बराबर होती है (ध्यान दें: जटिल भागों में रिक्त स्थान हैं धन चिह्न ( +
पहले भाग में) और रिक्त स्थान दूसरे भाग में):
PS > $url_parts
Name Value
---- -----
Scheme https
Path /foos
Server example.vertigion.com
QueryString foo2=complex%3b%2f%3f%3a%40%26%3d%2b%24%2c+bar%27%22&complex%3b%2f%3f%3a%40%26%3d%2b%24%2c+foo%27%22=bar2&foo1=bar1
QueryStringParts {foo2, complex;/?:@&=+$, foo'", foo1}
PS > $url_parts.QueryStringParts
Name Value
---- -----
foo2 complex;/?:@&=+$, bar'"
complex;/?:@&=+$, foo'" bar2
foo1 bar1
Decode URL को `[System.Web.HttpUtility] :: UrlDecode ()` के साथ
[uri]::EscapeDataString()
साथ एन्कोडेड
सबसे पहले, हम उपरोक्त उदाहरण में URL और क्वेरी स्ट्रिंग [uri]::EscapeDataString()
साथ इनकोड करेंगे।
https://example.vertigion.com/foos ? foo2 = जटिल% 3B% 2F% 3F% 3A% 40% 26% 3D% 2B% 24% 2C% 20bar '% 22 और जटिल% 3B% 2F% 3F% 3A% 40% 26% 3D 2%% 24% 2C% 20foo '% 22 = bar2 और foo1 = bar1
$url = 'https://example.vertigion.com/foos?foo2=complex%3B%2F%3F%3A%40%26%3D%2B%24%2C%20bar''%22&complex%3B%2F%3F%3A%40%26%3D%2B%24%2C%20foo''%22=bar2&foo1=bar1'
$url_parts_regex = '^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?' # See Remarks
if ($url -match $url_parts_regex) {
$url_parts = @{
'Scheme' = $Matches[2];
'Server' = $Matches[4];
'Path' = $Matches[5];
'QueryString' = $Matches[7];
'QueryStringParts' = @{}
}
foreach ($qs in $query_string.Split('&')) {
$qs_key, $qs_value = $qs.Split('=')
$url_parts.QueryStringParts.Add(
[System.Web.HttpUtility]::UrlDecode($qs_key),
[System.Web.HttpUtility]::UrlDecode($qs_value)
) | Out-Null
}
} else {
Throw [System.Management.Automation.ParameterBindingException] "Invalid URL Supplied"
}
यह आपको वापस [hashtable]$url_parts
; जो बराबर (नोट: जटिल भागों में रिक्त स्थान रिक्त स्थान हैं):
PS > $url_parts
Name Value
---- -----
Scheme https
Path /foos
Server example.vertigion.com
QueryString foo2=complex%3B%2F%3F%3A%40%26%3D%2B%24%2C%20bar'%22&complex%3B%2F%3F%3A%40%26%3D%2B%24%2C%20foo'%22=bar2&foo1=bar1
QueryStringParts {foo2, complex;/?:@&=+$, foo'", foo1}
PS > $url_parts.QueryStringParts
Name Value
---- -----
foo2 complex;/?:@&=+$, bar'"
complex;/?:@&=+$, foo'" bar2
foo1 bar1
[System.Web.HttpUtility]::UrlEncode()
साथ एन्कोडेड [System.Web.HttpUtility]::UrlEncode()
अब, हम URL और क्वेरी स्ट्रिंग को कूटबद्ध करेंगे [System.Web.HttpUtility]::UrlEncode()
उपरोक्त उदाहरण में:
https://example.vertigion.com/foos ? foo2 = जटिल% 3b% 2f% 3f% 3a% 40% 26% 3D% 2b% 24% 2c + बार% 27% 22% और जटिल% 3b% 2f% 3f% 3a% 40% 26% 3D% 2b% 24% 2c + foo% 27% 22 = bar2 और foo1 = bar1
$url = 'https://example.vertigion.com/foos?foo2=complex%3b%2f%3f%3a%40%26%3d%2b%24%2c+bar%27%22&complex%3b%2f%3f%3a%40%26%3d%2b%24%2c+foo%27%22=bar2&foo1=bar1'
$url_parts_regex = '^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?' # See Remarks
if ($url -match $url_parts_regex) {
$url_parts = @{
'Scheme' = $Matches[2];
'Server' = $Matches[4];
'Path' = $Matches[5];
'QueryString' = $Matches[7];
'QueryStringParts' = @{}
}
foreach ($qs in $query_string.Split('&')) {
$qs_key, $qs_value = $qs.Split('=')
$url_parts.QueryStringParts.Add(
[System.Web.HttpUtility]::UrlDecode($qs_key),
[System.Web.HttpUtility]::UrlDecode($qs_value)
) | Out-Null
}
} else {
Throw [System.Management.Automation.ParameterBindingException] "Invalid URL Supplied"
}
यह आपको वापस [hashtable]$url_parts
; जो बराबर (नोट: जटिल भागों में रिक्त स्थान रिक्त स्थान हैं):
PS > $url_parts
Name Value
---- -----
Scheme https
Path /foos
Server example.vertigion.com
QueryString foo2=complex%3b%2f%3f%3a%40%26%3d%2b%24%2c+bar%27%22&complex%3b%2f%3f%3a%40%26%3d%2b%24%2c+foo%27%22=bar2&foo1=bar1
QueryStringParts {foo2, complex;/?:@&=+$, foo'", foo1}
PS > $url_parts.QueryStringParts
Name Value
---- -----
foo2 complex;/?:@&=+$, bar'"
complex;/?:@&=+$, foo'" bar2
foo1 bar1