URL-Maskierung

Im .NET-Framework gibt es gleich mehrere Methoden, die Strings so maskieren, daß sie sicher in URLs verwendet werden können:

Worin unterscheiden sich diese Methoden?

HttpServerUtility.UrlEncode und HttpServerUtility.UrlPathEncode verwenden die gleichnamigen Methoden der HttpUtility-Klasse und benutzen Response.ContentEncoding als Codierung.

Nicht-ASCII-Zeichen werden von allen hier erwähnten Methoden %HH-maskiert, standardmäßig mit UTF-8. Unterschiede ergeben sich also ausschließlich bei ASCII-Zeichen (U+0000 bis U+007F); diese Unterschiede sind in der Tabelle hervorgehoben.

Die nicht druckbaren Zeichen U+0000 bis U+001F werden von HttpUtility.UrlPathEncode nicht angefaßt, von den anderen %HH-maskiert.

HttpUtility.UrlEncode entspricht ungefähr dem application/x-www-form-urlencoded-Inhaltstyp.

ZeichenUri.EscapeUriStringUri.EscapeDataStringHttpUtility.UrlEncodeHttpUtility.UrlPathEncode
U+0020%20%20+%20
!U+0021!!!!
"U+0022%22%22%22"
#U+0023#%23%23#
$U+0024$%24%24$
%U+0025%25%25%25%
&U+0026&%26%26&
'U+0027''''
(U+0028((((
)U+0029))))
*U+002A****
+U+002B+%2B%2B+
,U+002C,%2C%2C,
-U+002D----
.U+002E....
/U+002F/%2F%2F/
0U+00300000
1U+00311111
2U+00322222
3U+00333333
4U+00344444
5U+00355555
6U+00366666
7U+00377777
8U+00388888
9U+00399999
:U+003A:%3A%3A:
;U+003B;%3B%3B;
<U+003C%3C%3C%3C<
=U+003D=%3D%3D=
>U+003E%3E%3E%3E>
?U+003F?%3F%3F?
@U+0040@%40%40@
AU+0041AAAA
BU+0042BBBB
CU+0043CCCC
DU+0044DDDD
EU+0045EEEE
FU+0046FFFF
GU+0047GGGG
HU+0048HHHH
IU+0049IIII
JU+004AJJJJ
KU+004BKKKK
LU+004CLLLL
MU+004DMMMM
NU+004ENNNN
OU+004FOOOO
PU+0050PPPP
QU+0051QQQQ
RU+0052RRRR
SU+0053SSSS
TU+0054TTTT
UU+0055UUUU
VU+0056VVVV
WU+0057WWWW
XU+0058XXXX
YU+0059YYYY
ZU+005AZZZZ
[U+005B%5B%5B%5B[
\U+005C%5C%5C%5C\
]U+005D%5D%5D%5D]
^U+005E%5E%5E%5E^
_U+005F____
`U+0060%60%60%60`
aU+0061AAAA
bU+0062BBBB
cU+0063CCCC
dU+0064DDDD
eU+0065EEEE
fU+0066FFFF
gU+0067GGGG
hU+0068HHHH
iU+0069IIII
jU+006AJJJJ
kU+006BKKKK
lU+006CLLLL
mU+006DMMMM
nU+006ENNNN
oU+006FOOOO
pU+0070PPPP
qU+0071QQQQ
rU+0072RRRR
sU+0073SSSS
tU+0074TTTT
uU+0075UUUU
vU+0076VVVV
wU+0077WWWW
xU+0078XXXX
yU+0079YYYY
zU+007AZZZZ
{U+007B%7B%7B%7B{
|U+007C%7C%7C%7C|
}U+007D%7D%7D%7D}
~U+007E~~%7E~
U+007F%7F%7F%7F