{"id":117033,"date":"2020-08-22T07:14:10","date_gmt":"2020-08-22T07:14:10","guid":{"rendered":"https:\/\/blog.finxter.com\/?p=12105"},"modified":"2020-08-22T07:14:10","modified_gmt":"2020-08-22T07:14:10","slug":"collection-url-decoding-methods","status":"publish","type":"post","link":"https:\/\/sickgaming.net\/blog\/2020\/08\/22\/collection-url-decoding-methods\/","title":{"rendered":"[Collection] URL Decoding Methods"},"content":{"rendered":"<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Percent-encoding\" target=\"_blank\" rel=\"noreferrer noopener\" title=\"https:\/\/en.wikipedia.org\/wiki\/Percent-encoding\">URL encoding<\/a><em> &#8220;is a method to <a href=\"https:\/\/en.wikipedia.org\/wiki\/Binary-to-text_encoding\">encode<\/a> information in a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Uniform_Resource_Identifier\">Uniform Resource Identifier<\/a> (URI)&#8221;<\/em>. It is also called <em>Percent-encoding<\/em> because percentage symbols are used to encode certain reserved characters:<\/p>\n<figure class=\"wp-block-table is-style-stripes\">\n<table>\n<tbody>\n<tr>\n<td><code>!<\/code><\/td>\n<td><code>#<\/code><\/td>\n<td><code>$<\/code><\/td>\n<td><code>%<\/code><\/td>\n<td><code>&amp;<\/code><\/td>\n<td><code>'<\/code><\/td>\n<td><code>(<\/code><\/td>\n<td><code>)<\/code><\/td>\n<td><code>*<\/code><\/td>\n<td><code>+<\/code><\/td>\n<td><code>,<\/code><\/td>\n<td><code>\/<\/code><\/td>\n<td><code>:<\/code><\/td>\n<td><code>;<\/code><\/td>\n<td><code>=<\/code><\/td>\n<td><code>?<\/code><\/td>\n<td><code>@<\/code><\/td>\n<td><code>[<\/code><\/td>\n<td><code>]<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>%21<\/code><\/td>\n<td><code>%23<\/code><\/td>\n<td><code>%24<\/code><\/td>\n<td><code>%25<\/code><\/td>\n<td><code>%26<\/code><\/td>\n<td><code>%27<\/code><\/td>\n<td><code>%28<\/code><\/td>\n<td><code>%29<\/code><\/td>\n<td><code>%2A<\/code><\/td>\n<td><code>%2B<\/code><\/td>\n<td><code>%2C<\/code><\/td>\n<td><code>%2F<\/code><\/td>\n<td><code>%3A<\/code><\/td>\n<td><code>%3B<\/code><\/td>\n<td><code>%3D<\/code><\/td>\n<td><code>%3F<\/code><\/td>\n<td><code>%40<\/code><\/td>\n<td><code>%5B<\/code><\/td>\n<td><code>%5D<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<p>This article collects various ways to <strong><em>decode <\/em><\/strong>an URL encoded string. Let&#8217;s get started!<\/p>\n<h2>Python 2<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ alias urldecode='python -c \"import sys, urllib as ul; \\ print ul.unquote_plus(sys.argv[1])\"' $ alias urlencode='python -c \"import sys, urllib as ul; \\ print ul.quote_plus(sys.argv[1])\"'<\/pre>\n<p><a href=\"https:\/\/unix.stackexchange.com\/questions\/159253\/decoding-url-encoding-percent-encoding\" target=\"_blank\" rel=\"noreferrer noopener\" title=\"https:\/\/unix.stackexchange.com\/questions\/159253\/decoding-url-encoding-percent-encoding\">Source<\/a><\/p>\n<p>Here&#8217;s an example usage:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ urldecode 'q+werty%3D%2F%3B'\nq werty=\/; $ urlencode 'q werty=\/;'\nq+werty%3D%2F%3B<\/pre>\n<h2>Python 3<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ alias urldecode='python3 -c \"import sys, urllib.parse as ul; \\ print(ul.unquote_plus(sys.argv[1]))\"' $ alias urlencode='python3 -c \"import sys, urllib.parse as ul; \\ print (ul.quote_plus(sys.argv[1]))\"'<\/pre>\n<p>Here&#8217;s an example usage:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ urldecode 'q+werty%3D%2F%3B'\nq werty=\/; $ urlencode 'q werty=\/;'\nq+werty%3D%2F%3B<\/pre>\n<p><a href=\"https:\/\/unix.stackexchange.com\/questions\/159253\/decoding-url-encoding-percent-encoding\" target=\"_blank\" rel=\"noreferrer noopener\">Source<\/a><\/p>\n<h2>sed<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ sed 's@+@ @g;s@%@\\\\x@g' file | xargs -0 printf \"%b\"<\/pre>\n<p><a href=\"https:\/\/unix.stackexchange.com\/questions\/159253\/decoding-url-encoding-percent-encoding\" target=\"_blank\" rel=\"noreferrer noopener\">Source<\/a><\/p>\n<h2>sed with echo -e<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ sed -e's\/%\\([0-9A-F][0-9A-F]\\)\/\\\\\\\\\\x\\1\/g' file | xargs echo -e<\/pre>\n<p><a href=\"https:\/\/unix.stackexchange.com\/questions\/159253\/decoding-url-encoding-percent-encoding\" target=\"_blank\" rel=\"noreferrer noopener\">Source<\/a><\/p>\n<h2>sed with alias<\/h2>\n<p>For convenience, you may want to use an alias:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ alias urldecode='sed \"s@+@ @g;s@%@\\\\\\\\x@g\" | xargs -0 printf \"%b\"'<\/pre>\n<p>If you want to decode, you can now simply use:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ echo \"http%3A%2F%2Fwww\" | urldecode\nhttp:\/\/www<\/pre>\n<p><a href=\"https:\/\/unix.stackexchange.com\/questions\/159253\/decoding-url-encoding-percent-encoding\" target=\"_blank\" rel=\"noreferrer noopener\">Source<\/a><\/p>\n<h2>Bash<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">input=\"http%3A%2F%2Fwww\"\ndecoded=$(printf '%b' \"${input\/\/%\/\\\\x}\")<\/pre>\n<p><a href=\"https:\/\/unix.stackexchange.com\/questions\/159253\/decoding-url-encoding-percent-encoding\" target=\"_blank\" rel=\"noreferrer noopener\">Source<\/a><\/p>\n<p>To handle pluses (<code>+<\/code>) correctly, replace them with spaces using <code>sed<\/code>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">decoded=$(input=${input\/\/+\/ }; printf \"${input\/\/%\/\\\\x}\")<\/pre>\n<h2>Bash + urlencode() + urldecode() Functions<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">urlencode() { # urlencode &lt;string> local length=\"${#1}\" for (( i = 0; i &lt; length; i++ )); do local c=\"${1:i:1}\" case $c in [a-zA-Z0-9.~_-]) printf \"$c\" ;; *) printf '%%%02X' \"'$c\" ;; esac done\n} urldecode() { # urldecode &lt;string> local url_encoded=\"${1\/\/+\/ }\" printf '%b' \"${url_encoded\/\/%\/\\\\x}\"\n}<\/pre>\n<p>Sources:<\/p>\n<ul>\n<li><a href=\"https:\/\/unix.stackexchange.com\/questions\/159253\/decoding-url-encoding-percent-encoding\" target=\"_blank\" rel=\"noreferrer noopener\">StackOverflow<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/sixarm\/urldecode.sh\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/sixarm\/urldecode.sh<\/a><\/li>\n<\/ul>\n<h2>bash + xxd<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">urlencode() { local length=\"${#1}\" for (( i = 0; i &lt; length; i++ )); do local c=\"${1:i:1}\" case $c in [a-zA-Z0-9.~_-]) printf \"$c\" ;; *) printf \"$c\" | xxd -p -c1 | while read x;do printf \"%%%s\" \"$x\";done esac\ndone\n}<\/pre>\n<p>Sources:<\/p>\n<ul>\n<li><a href=\"https:\/\/gist.github.com\/cdown\/1163649\">cdown&#8217;s gist<\/a><\/li>\n<li><a href=\"https:\/\/stackoverflow.com\/questions\/6250698\/shell-script-to-urldecode-file-contents\">Stackoverflow<\/a><\/li>\n<li><a href=\"https:\/\/unix.stackexchange.com\/questions\/159253\/decoding-url-encoding-percent-encoding\" target=\"_blank\" rel=\"noreferrer noopener\">Another Source<\/a><\/li>\n<\/ul>\n<h2>PHP<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ echo oil+and+gas | php -r 'echo urldecode(fgets(STDIN));' \/\/ Or: php:\/\/stdin\noil and gas<\/pre>\n<p><a href=\"https:\/\/unix.stackexchange.com\/questions\/159253\/decoding-url-encoding-percent-encoding\" target=\"_blank\" rel=\"noreferrer noopener\">Source<\/a><\/p>\n<h2>PHP Library<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">php -r 'echo urldecode(\"oil+and+gas\");'<\/pre>\n<p><a href=\"https:\/\/unix.stackexchange.com\/questions\/159253\/decoding-url-encoding-percent-encoding\" target=\"_blank\" rel=\"noreferrer noopener\">Source<\/a><\/p>\n<h2>Perl<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">decoded_url=$(perl -MURI::Escape -e 'print uri_unescape($ARGV[0])' \"$encoded_url\")<\/pre>\n<p><a href=\"https:\/\/unix.stackexchange.com\/questions\/159253\/decoding-url-encoding-percent-encoding\" target=\"_blank\" rel=\"noreferrer noopener\">Source<\/a><\/p>\n<h2>Perl to Process File<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">perl -i -MURI::Escape -e 'print uri_unescape($ARGV[0])' file<\/pre>\n<p><a href=\"https:\/\/unix.stackexchange.com\/questions\/159253\/decoding-url-encoding-percent-encoding\" target=\"_blank\" rel=\"noreferrer noopener\">Source<\/a><\/p>\n<h3>awk<\/h3>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">awk -niord '{printf RT?$0chr(\"0x\"substr(RT,2)):$0}' RS=%..<\/pre>\n<p>Sources:<\/p>\n<ul>\n<li><a href=\"https:\/\/stackoverflow.com\/a\/14000368\/55075\" target=\"_blank\" rel=\"noreferrer noopener\">anon<\/a>&#8216;s comment in StackOverflow article<\/li>\n<li><a href=\"https:\/\/unix.stackexchange.com\/questions\/159253\/decoding-url-encoding-percent-encoding\" target=\"_blank\" rel=\"noreferrer noopener\">Source<\/a><\/li>\n<li><a href=\"https:\/\/stackoverflow.com\/questions\/3728049\/using-awk-printf-to-urldecode-text\">Using awk printf to urldecode text<\/a>.<\/li>\n<\/ul>\n<h2>Python 2 urllib.unquote<\/h2>\n<p>The <a href=\"http:\/\/docs.python.org\/2.7\/library\/urllib.html#urllib.unquote\"><code>urllib.unquote<\/code><\/a> is a special function in Python&#8217;s built-in standard library <code>urllib<\/code> that does what you need:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">decoded_url=$(python2 -c 'import sys, urllib; print urllib.unquote(sys.argv[1])' \"$encoded_url\")<\/pre>\n<p>You can also use it to modify a file:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">python2 -c 'import sys, urllib; print urllib.unquote(sys.stdin.read())' &lt;file >file.new &amp;&amp;\nmv -f file.new file<\/pre>\n<p>Source: <a href=\"https:\/\/unix.stackexchange.com\/questions\/159253\/decoding-url-encoding-percent-encoding\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/unix.stackexchange.com\/questions\/159253\/decoding-url-encoding-percent-encoding<\/a><\/p>\n<h2>Python 3 urllib.parse.unquote<\/h2>\n<p>If you run Python 3 on your system (like most people would), use the alternative function <a href=\"http:\/\/docs.python.org\/3.1\/library\/urllib.parse.html#urllib.parse.unquote\" target=\"_blank\" rel=\"noreferrer noopener\"><code>urllib.parse.unquote<\/code><\/a>. To check your version, visit <a href=\"https:\/\/blog.finxter.com\/how-to-check-your-python-version\/\" target=\"_blank\" rel=\"noreferrer noopener\" title=\"How to Check Your Python Version? A Helpful Guide\">this article<\/a>.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">decoded_url=$(python3 -c 'import sys, urllib.parse; print(urllib.parse.unquote(sys.argv[1]))' \"$encoded_url\")<\/pre>\n<p>Again, you can use the function to process a file as follows:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">python3 -c 'import sys, urllib; print(urllib.parse.unquote(sys.stdin.read()))' &lt;file >file.new &amp;&amp;\nmv -f file.new file<\/pre>\n<p>Source: <a href=\"https:\/\/unix.stackexchange.com\/questions\/159253\/decoding-url-encoding-percent-encoding\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/unix.stackexchange.com\/questions\/159253\/decoding-url-encoding-percent-encoding<\/a><\/p>\n<h2>Perl URI::Escape<\/h2>\n<p>The <a href=\"http:\/\/search.cpan.org\/perldoc?URI%3A%3AEscape\"><code>URI::Escape<\/code><\/a> solves the problem of URL decoding for Perl users. <\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">decoded_url=$(perl -MURI::Escape -e 'print uri_unescape($ARGV[0])' \"$encoded_url\")<\/pre>\n<p>You can use the function to process a file as follows:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">perl -i -MURI::Escape -e 'print uri_unescape($ARGV[0])' file<\/pre>\n<p>Source: <a href=\"https:\/\/unix.stackexchange.com\/questions\/159253\/decoding-url-encoding-percent-encoding\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/unix.stackexchange.com\/questions\/159253\/decoding-url-encoding-percent-encoding<\/a><\/p>\n<h2>Perl One-Liner Without Installing Modules<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ perl -pe 's\/\\%(\\w\\w)\/chr hex $1\/ge'<\/pre>\n<p>Here&#8217;s a usage example:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ echo '%21%22' | perl -pe 's\/\\%(\\w\\w)\/chr hex $1\/ge'\n!\"<\/pre>\n<p>Source: <a href=\"https:\/\/unix.stackexchange.com\/questions\/159253\/decoding-url-encoding-percent-encoding\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/unix.stackexchange.com\/questions\/159253\/decoding-url-encoding-percent-encoding<\/a><\/p>\n<h2>Bash Regex<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ function urldecode() { : \"${*\/\/+\/ }\"; echo -e \"${_\/\/%\/\\\\x}\"; }<\/pre>\n<p>Now, you can use the function as a command like this:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ urldecode https%3A%2F%2Fgoogle.com%2Fsearch%3Fq%3Durldecode%2Bbash\nhttps:\/\/google.com\/search?q=urldecode+bash<\/pre>\n<p>If you need to assign some variables, use this strategy:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ x=\"http%3A%2F%2Fstackoverflow.com%2Fsearch%3Fq%3Durldecode%2Bbash\"\n$ y=$(urldecode \"$x\")\n$ echo \"$y\"\nhttp:\/\/stackoverflow.com\/search?q=urldecode+bash<\/pre>\n<p>Source: <a href=\"https:\/\/stackoverflow.com\/questions\/6250698\/how-to-decode-url-encoded-string-in-shell\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/stackoverflow.com\/questions\/6250698\/how-to-decode-url-encoded-string-in-shell<\/a><\/p>\n<h2>GNU Awk<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/usr\/bin\/awk -fn\n@include \"ord\"\nBEGIN { RS = \"%..\"\n}\n{ printf \"%s\", $0 if (RT != \"\") { printf \"%s\", chr(\"0x\" substr(RT, 2)) }\n}<\/pre>\n<p>Source: <a href=\"https:\/\/stackoverflow.com\/questions\/6250698\/how-to-decode-url-encoded-string-in-shell\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/stackoverflow.com\/questions\/6250698\/how-to-decode-url-encoded-string-in-shell<\/a><\/p>\n<\/p>\n<h3>References<\/h3>\n<ul>\n<li><a href=\"https:\/\/web.archive.org\/web\/20110111070924\/http:\/\/www.ruslanspivak.com:80\/2010\/06\/02\/urlencode-and-urldecode-from-a-command-line\/\" target=\"_blank\" rel=\"noreferrer noopener\">Urlencode and urldecode from a command line<\/a><\/li>\n<li><a href=\"https:\/\/unix.stackexchange.com\/questions\/159253\/decoding-url-encoding-percent-encoding\" target=\"_blank\" rel=\"noreferrer noopener\">Decoding URL encoding (percent encoding)<\/a><\/li>\n<li><a href=\"https:\/\/stackoverflow.com\/questions\/6250698\/how-to-decode-url-encoded-string-in-shell\">How to decode URL-encoded string in shell?<\/a><\/li>\n<li><a href=\"https:\/\/gist.github.com\/cdown\/1163649\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/gist.github.com\/cdown\/1163649 <\/a><\/li>\n<li><a href=\"https:\/\/dev.to\/k4ml\/python-urldecode-on-command-line-2ek9\" target=\"_blank\" rel=\"noreferrer noopener\" title=\"https:\/\/dev.to\/k4ml\/python-urldecode-on-command-line-2ek9\">Python urldecode on command line<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>URL encoding &#8220;is a method to encode information in a Uniform Resource Identifier (URI)&#8221;. It is also called Percent-encoding because percentage symbols are used to encode certain reserved characters: ! # $ % &amp; &#8216; ( ) * + , \/ : ; = ? @ [ ] %21 %23 %24 %25 %26 %27 %28 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[857],"tags":[73,468,528],"class_list":["post-117033","post","type-post","status-publish","format-standard","hentry","category-python-tut","tag-programming","tag-python","tag-tutorial"],"_links":{"self":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/117033","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/comments?post=117033"}],"version-history":[{"count":0,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/117033\/revisions"}],"wp:attachment":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/media?parent=117033"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/categories?post=117033"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/tags?post=117033"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}