URL decoding: Difference between revisions
→{{header|langur}}
(added new test case; %25%32%35 should decode to %25 and not %) |
Langurmonkey (talk | contribs) |
||
(12 intermediate revisions by 6 users not shown) | |||
Line 263:
=={{header|AutoHotkey}}==
<syntaxhighlight lang="autohotkey">
VarSetCapacity(Var, StrPut(Uri, "UTF-8"), 0)
Loop {▼
Loop Parse, Uri
If (A_Index < LoopOffset)
Continue
}
Else {
Number := Ord(A_LoopField)
}
}
Return
}
MsgBox %
MsgBox %
MsgBox %
</syntaxhighlight>
Line 798 ⟶ 799:
=={{header|Java}}==
Java offers the ''URLDecoder'' and ''URLEncoder'' classes for this specific task.
<syntaxhighlight lang="java">
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
<syntaxhighlight lang="java">
URLDecoder.decode("http%3A%2F%2Ffoo%20bar%2F", StandardCharsets.UTF_8)
</syntaxhighlight>
▲ {
Alternately, you could use a regular expression capture
String encoded = "http%3A%2F%2Ffoo%20bar%2F";▼
<syntaxhighlight lang="java">
import java.util.regex.Matcher;
import java.util.regex.Pattern;
</syntaxhighlight>
<syntaxhighlight lang="java">
String decode(String string) {
Pattern pattern = Pattern.compile("%([A-Za-z\\d]{2})");
Matcher matcher = pattern.matcher(string);
StringBuilder decoded = new StringBuilder(string);
char character;
int start, end, offset = 0;
while (matcher.find()) {
character = (char) Integer.parseInt(matcher.group(1), 16);
/* offset the matched index since were adjusting the string */
start = matcher.start() - offset;
end = matcher.end() - offset;
decoded.replace(start, end, String.valueOf(character));
offset += 2;
}
return decoded.toString();
▲}</syntaxhighlight>
}
</syntaxhighlight>
{{out}}▼
<pre>
google.com/search?q=`Abdu'l-Bahá
</pre>
=={{header|JavaScript}}==
Line 924 ⟶ 944:
=={{header|langur}}==
<syntaxhighlight lang="langur">
val finish = fn s:b2s(map(fn x:number(x, 16), rest(split("%", s))))
val
writeln
writeln
</syntaxhighlight>
Line 1,283 ⟶ 1,304:
mailto:"Irma User" <irma.user@mail.com>
</pre>
=={{header|PascalABC.NET}}==
<syntaxhighlight lang="delphi">
uses System;
function URLDecode(s: string) := Uri.UnescapeDataString(s);
begin
Println(URLDecode('google.com/search?q=%60Abdu%27l-Bah%C3%A1'));
Println(URLDecode('%25%32%35'));
end.
</syntaxhighlight>
▲{{out}}
<pre>
http://foo bar/
google.com/search?q=`Abdu'l-Bahá
%25
</pre>
=={{header|Perl}}==
Line 1,666 ⟶ 1,707:
works like ''fromPercentEncoded'' and additionally decodes '+' with a space.
Both functions return byte sequences.
To decode Unicode characters it is necessary to convert them from UTF-8 with
<syntaxhighlight lang="seed7">$ include "seed7_05.s7i";
include "encoding.s7i";
Line 1,885 ⟶ 1,926:
=={{header|Wren}}==
{{libheader|Wren-fmt}}
<syntaxhighlight lang="
var urlDecode = Fn.new { |enc|
|