%FF%FF
ist offensichtlich falsch. Wenn die Eingabe UTF-8 war, würde man %C3%A4
erwarten:
$ printf ä | od -t x1
0000000 c3 a4
Eine Alternative wäre möglicherweise, es selbst zu machen. Ich verwende hier und da das:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 | #!/bin/bash
urlencode()
(
LANG=C
local c
local i
local len=${#1}
for (( i = 0; i < len; i++ ))
do
c=${1:$i:1}
case $c in
[-._a-zA-Z0-9]) printf '%s' "$c" ;;
*) printf '%%%02X' "'$c" ;;
esac
done
)
urlencode hallo; echo
urlencode däst; echo
urlencode 'dies & das, müt ümläuten und 🐧'; echo
|
$ ./bla
hallo
d%C3%A4st
dies%20%26%20das%2C%20m%C3%BCt%20%C3%BCml%C3%A4uten%20und%20%F0%9F%90%A7
Mit dem Decoding sollte könnte sich dein fertiges urlencode dann leichter tun … ansonsten muss man das auch selbst machen. Hab’ ich jetzt aber nichts Fertiges parat. 😬