1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| #! /bin/sh
# urlencode en bash
# utilisation: urlencode.sh "Phrase à encoder héhé!"
# tableau simplifié des caractères usuels attendus dans un url.
SPEC_CAR=" !\"#$%&'()*+,/:;<=>?@[]^{|}~ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
HEX[1]='+' ; HEX[2]='%21' ; HEX[3]='%22' ; HEX[4]='%23' ; HEX[5]='%24'
HEX[6]='%25' ; HEX[7]='%26' ; HEX[8]='%27' ; HEX[9]='%28' ; HEX[10]='%29'
HEX[11]='%2A'; HEX[12]='%2B'; HEX[13]='%2C'; HEX[14]='%2F'; HEX[15]='%3A'
HEX[16]='%3B'; HEX[17]='%3C'; HEX[18]='%3D'; HEX[19]='%3E'; HEX[20]='%3F'
HEX[21]='%40'; HEX[22]='%5B'; HEX[23]='%5D'; HEX[24]='%5E'; HEX[25]='%7B'
HEX[26]='%7C'; HEX[27]='%7D'; HEX[28]='%7E'; HEX[29]='%C0'; HEX[30]='%C1'
HEX[31]='%C2'; HEX[32]='%C3'; HEX[33]='%C4'; HEX[34]='%C5'; HEX[35]='%C6'
HEX[36]='%C7'; HEX[37]='%C8'; HEX[38]='%C9'; HEX[39]='%CA'; HEX[40]='%CB'
HEX[41]='%CC'; HEX[42]='%CD'; HEX[43]='%CE'; HEX[44]='%CF'; HEX[45]='%D0'
HEX[46]='%D1'; HEX[47]='%D2'; HEX[48]='%D3'; HEX[49]='%D4'; HEX[50]='%D5'
HEX[51]='%D6'; HEX[52]='%D8'; HEX[53]='%D9'; HEX[54]='%DA'; HEX[55]='%DB'
HEX[56]='%DC'; HEX[57]='%DD'; HEX[58]='%DE'; HEX[59]='%DF'; HEX[60]='%E0'
HEX[61]='%E1'; HEX[62]='%E2'; HEX[63]='%E3'; HEX[64]='%E4'; HEX[65]='%E5'
HEX[66]='%E6'; HEX[67]='%E7'; HEX[68]='%E8'; HEX[69]='%E9'; HEX[70]='%EA'
HEX[71]='%EB'; HEX[72]='%EC'; HEX[73]='%ED'; HEX[74]='%EE'; HEX[75]='%EF'
HEX[76]='%F0'; HEX[77]='%F1'; HEX[78]='%F2'; HEX[79]='%F3'; HEX[80]='%F4'
HEX[81]='%F5'; HEX[82]='%F6'; HEX[83]='%F7'; HEX[84]='%F8'; HEX[85]='%F9'
HEX[86]='%FA'; HEX[87]='%FB'; HEX[88]='%FC'; HEX[89]='%FD'; HEX[90]='%FE'
HEX[91]='%FF'
STR=$1
LEN=${#STR}
URLENCODED=''
i=0
for ((i=0; i < LEN ; i++))
do
CAR=${STR:$i:1}
CAR=$(echo "$CAR" | sed -r 's/([+\(\)]|\[|\])/\\\1/g')
POS=$(expr index "$SPEC_CAR" "$CAR")
if [ $POS = 0 ]
then
URLENCODED=$URLENCODED$CAR
else
URLENCODED=$URLENCODED${HEX[$POS]}
fi
done
echo $URLENCODED |