Ich habe es getestet, indem ich meine Website (Apache) mit allen verfügbaren Zeichen auf meiner deutschen Tastatur als URL-Parameter angefordert habe:
http://example.com/?^1234567890ß´qwertzuiopü+asdfghjklöä#<yxcvbnm,.-°!"§$%&/()=? `QWERTZUIOPÜ*ASDFGHJKLÖÄ\'>YXCVBNM;:_²³{[]}\|µ@€~
Diese wurden nicht verschlüsselt:
^0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,.-!/()=?`*;:_{}[]\|~
Nicht verschlüsselt nach urlencode()
:
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-_
Nicht verschlüsselt nach rawurlencode()
:
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-_~
Hinweis: Vor PHP 5.3.0 wegen RFC 1738rawurlencode()
codiert . Dies wurde jedoch durch RFC 3986 ersetzt, sodass es jetzt sicher verwendet werden kann. Aber ich verstehe nicht, warum zum Beispiel durch codiert werden, weil sie in RFC 3986 nicht erwähnt werden.~
{}
rawurlencode()
Ein zusätzlicher Test, den ich durchgeführt habe, betraf die automatische Verknüpfung in Mail-Texten. Ich habe Mozilla Thunderbird, aol.com, Outlook.com, Gmail.com, gmx.de und yahoo.de getestet und sie haben URLs mit diesen Zeichen vollständig verknüpft:
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-_~+#,%&=*;:@
Natürlich ?
war das auch verlinkt, aber nur wenn es einmal benutzt wurde.
Einige Leute würden jetzt vorschlagen, nur die rawurlencode()
Zeichen zu verwenden, aber haben Sie jemals gehört, dass jemand Probleme beim Öffnen dieser Websites hatte?
Sternchen
http://wayback.archive.org/web/*/http://google.com
Doppelpunkt
https://en.wikipedia.org/wiki/Wikipedia:About
Plus
https://plus.google.com/+google
Am Zeichen, Doppelpunkt, Komma und Ausrufezeichen
https: //www.google.com/maps/place/USA/@36.2218457, ...
Aus diesem Grund sollten diese Zeichen ohne Probleme unverschlüsselt verwendet werden können. Natürlich sollten Sie &;
wegen Codierungssequenzen wie nicht verwenden &
. Es gilt der gleiche Grund wie für %
die Codierung von Zeichen im Allgemeinen. Und =
da es einem Parameternamen einen Wert zuweist.
Schließlich würde ich sagen, dass es in Ordnung ist, diese nicht codierten zu verwenden:
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-_~!+,*:@
Wenn Sie jedoch zufällig generierte URLs erwarten, sollten Sie diese nicht verwenden .!
, da diese das Ende eines Satzes markieren und einige E-Mail-Apps das letzte Zeichen der URL nicht automatisch verknüpfen. Beispiel:
Visit http://example.com/foo=bar! !
!*'();:@&=+$,/?#[]
oder nicht reserviertA-Za-z0-9_.~-
(oder ein Prozentzeichen%
als Teil einer Prozentcodierung)