Die URL-Kodierung (engl. url encoding) wird verwendet, wenn beim Aufruf einer Internet-Seite Informationen vom Web-Browser an den Web-Server übergeben werden.
Das Problem liegt darin, dass gewisse Zeichen in einer URL besondere Bedeutungen haben, wie zum Beispiel "&" und "=". Diese Zeichen werden auch als reserviert bezeichnet. Reservierte Zeichen, die in zu übertragenen Daten enthalten sind, müssen kodiert werden. Dies geschieht, indem in den Daten statt eines reservierten Zeichens das Zeichen "%" (Prozentzeichen), gefolgt vom zweistelligen Hex-Code seiner US-ASCII-Darstellung angegeben werden.
http://www.example.net/index.html?login=Mustermann&passwort=2%26z%3DB
2 %-Darstellung
Eine URL besteht aus den genannten reservierten und nicht-reservierten Zeichen; andere Zeichen dürfen in ihr nicht vorkommen. Es besteht jedoch prinzipiell der Bedarf, in URLs beliebige Byte-Folgen – also sämtliche Werte zwischen 0 und 255 – darstellen zu können. Zudem muss eine Möglichkeit existieren, reservierte Zeichen in einer URL derart schreiben zu können, dass sie ihre speziellen Bedeutungen verlieren (siehe auch: Escape-Sequenz).
Die %-Darstellung von Zeichen trägt beiden Forderungen Rechnung. Ihr zugrunde liegt ein Kodierungsverfahren, welches jedem Zeichencode eine 3-stellige Zeichenkombination zuordnet, die mit dem Prozentzeichen eingeleitet wird, dem die zweiziffrige hexadezimale Darstellung des Zeichencodes folgt.
Ein reserviertes Zeichen ist in einer URL in %-kodierter Form zu schreiben, wenn es an der Stelle, an der es sich befindet, eine besondere Bedeutung hat, diese aber im vorliegenden Kontext nicht haben soll. Nicht-reservierte Zeichen können %-kodiert werden, sollten es aber nicht. Bei anderen Zeichen (u. a. Binärdaten) besteht meist gar keine andere Möglichkeit, als sie in einer URL in %-kodierter Form darzustellen (Ausnahme: reserviertes Zeichen „+“ anstelle eines Leerzeichens im sog. „Query-String“).
3 Nicht-ASCII-Zeichen
Auch für die Zeichen, die nicht im ASCII-Zeichensatz enthalten sind, werden die Bytes mit vorangestelltem % kodiert. Welche Bitfolge ein Zeichen jedoch darstellt, hängt von der zu benutzenden Zeichenkodierung ab. Es wird zwar vom RFC 3986 empfohlen, UTF-8 zur Kodierung zu benutzen, da dieses Unicode-Format für alle internationalen Zeichen benutzt werden kann, was UTF-8 zwar zur Quasi-Standardkodierung für URIs macht, aber einen expliziten Standard gibt es noch nicht.
Um die URL kodieren zu können, muss man also wissen, welche Zeichenkodierung für die abzurufende Datei benutzt wurde oder welche Kodierung der Zielrechner benutzt. Aus diesem Grund ist es immer noch sinnvoll, nur auf Zeichen aus dem ASCII-Vorrat zurückzugreifen.
4 ISO/IEC 8859-1
Meist wird immer noch ISO 8859-1 (Latin-1) für die Darstellung benutzt und dessen identischer Zeichenwert 246 (Dezimal) direkt mit Hilfe der %-Kodierung in die URL eingefügt. Z. B. Ausrufezeichen ! wird dann als Wert %21 dargestellt.
Code
|
…0 |
…1 |
…2 |
…3 |
…4 |
…5 |
…6 |
…7 |
…8 |
…9 |
…A |
…B |
…C |
…D |
…E |
…F
|
0…
|
nicht belegt
|
1…
|
2…
|
SP |
! |
" |
# |
$ |
% |
& |
' |
( |
) |
* |
+ |
, |
- |
. |
/
|
3…
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
: |
; |
< |
= |
> |
?
|
4…
|
@ |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O
|
5…
|
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
[ |
\ |
] |
^ |
_
|
6…
|
` |
a |
b |
c |
d |
e |
f |
g |
h |
i |
j |
k |
l |
m |
n |
o
|
7…
|
p |
q |
r |
s |
t |
u |
v |
w |
x |
y |
z |
{ |
| |
} |
~ |
|
8…
|
nicht belegt
|
9…
|
A…
|
NBSP |
¡ |
¢ |
£ |
¤ |
¥ |
¦ |
§ |
¨ |
© |
ª |
« |
¬ |
SHY |
® |
¯
|
B…
|
° |
± |
² |
³ |
´ |
µ |
¶ |
· |
¸ |
¹ |
º |
» |
¼ |
½ |
¾ |
¿
|
C…
|
À |
Á |
 |
à |
Ä |
Å |
Æ |
Ç |
È |
É |
Ê |
Ë |
Ì |
Í |
Î |
Ï
|
D…
|
Ð |
Ñ |
Ò |
Ó |
Ô |
Õ |
Ö |
× |
Ø |
Ù |
Ú |
Û |
Ü |
Ý |
Þ |
ß
|
E…
|
à |
á |
â |
ã |
ä |
å |
æ |
ç |
è |
é |
ê |
ë |
ì |
í |
î |
ï
|
F…
|
ð |
ñ |
ò |
ó |
ô |
õ |
ö |
÷ |
ø |
ù |
ú |
û |
ü |
ý |
þ |
ÿ
|
5 Abfragen
Die Abfrage einer URL kann zum Beispiel so durchgeführt werden:
http://xml.utrace.de/?query=www.pluspedia.de (Domainname)
http://xml.utrace.de/?query=91.35.248.55 (IP-Adresse)
|