mirror of
https://github.com/foo-dogsquared/wiki.git
synced 2025-01-31 04:58:21 +00:00
377850d0d1
I also forget to add the additional solutions from the Exercism exercises. Whoops... I'm also getting used to storing code in random places. Time to change that habit a little bit by storing them in my notebook, instead. Nothing wrong with that, yeah?!
1.4 KiB
1.4 KiB
Percent encoding in Bash
Percent-encoding is commonly used in URLs. Pretty nice especially when used with spaces.
Based from this implementation.
It was modified to be closer to the output from Python urlencode
.
function urlencode {
local msg=$1
local length="${#1}"
for (( i = 0; i < length; i++ )); do
local ch="${msg:i:1}"
case $ch in
[a-zA-Z0-9.~_-])
printf "%c" $ch;;
,*)
printf '%s' "$ch" | xxd -plain -cols 1 | {
while read hex; do
printf "%%%s" $hex
done
};;
esac
done
printf "\n"
}
urlencode "El Doggo"
urlencode "El Niño"
urlencode "Whoa there, sonny!"
ElDoggo ElNiÃo Whoatheresonny
To decode percent-encoded strings:
function urldecode {
# urldecode <string>
local url_encoded="${1//+/ }"
printf '%b\n' "${url_encoded//%/\\x}"
}
urldecode "El%20Doggo"
urldecode "%e9%bd%8b%e8%97%a4%e3%83%bbB%e3%83%bb%e6%a5%b5%e3%83%bb%e5%b0%86%e5%97%a3"
El Doggo 齋藤・ B ・極・将嗣