Saya mengujinya dengan meminta situs web saya (apache) dengan semua karakter yang tersedia di keyboard jerman saya sebagai parameter URL:
http://example.com/?^1234567890ß´qwertzuiopü+asdfghjklöä#<yxcvbnm,.-°!"§$%&/()=? `QWERTZUIOPÜ*ASDFGHJKLÖÄ\'>YXCVBNM;:_²³{[]}\|µ@€~
Ini tidak disandikan:
^0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,.-!/()=?`*;:_{}[]\|~
Tidak disandikan setelah urlencode()
:
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-_
Tidak disandikan setelah rawurlencode()
:
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-_~
Catatan: Sebelum PHP 5.3.0 rawurlencode()
disandikan ~
karena RFC 1738 . Tapi ini digantikan oleh RFC 3986 sehingga aman digunakan, sekarang. Tapi saya tidak mengerti mengapa misalnya {}
dikodekan melalui rawurlencode()
karena mereka tidak disebutkan dalam RFC 3986.
Tes tambahan yang saya lakukan adalah tentang penautan otomatis dalam teks surat. Saya menguji Mozilla Thunderbird, aol.com, outlook.com, gmail.com, gmx.de dan yahoo.de dan mereka sepenuhnya menautkan URL yang berisi karakter ini:
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-_~+#,%&=*;:@
Tentu saja ?
itu ditautkan juga, tetapi hanya jika digunakan sekali.
Beberapa orang sekarang menyarankan untuk menggunakan hanya rawurlencode()
karakter, tetapi apakah Anda pernah mendengar bahwa seseorang memiliki masalah untuk membuka situs web ini?
Asterisk
http://wayback.archive.org/web/*/http://google.com
Colon
https://en.wikipedia.org/wiki/Wikipedia:About
Plus
https://plus.google.com/+google
Pada tanda, tanda titik dua, tanda koma dan tanda seru
https: //www.google.com/maps/place/USA/@36.2218457, ...
Karena itu karakter ini harus dapat digunakan tanpa kode tanpa masalah. Tentu saja Anda tidak boleh menggunakan &;
karena urutan pengkodean seperti &
. Alasan yang sama berlaku karena %
digunakan untuk menyandikan karakter secara umum. Dan =
saat memberikan nilai ke nama parameter.
Akhirnya saya akan mengatakan tidak apa-apa untuk menggunakan ini tanpa kode:
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-_~!+,*:@
Tetapi jika Anda mengharapkan URL yang dibuat secara acak sebaiknya tidak Anda gunakan .!
, karena itu menandai akhir kalimat dan beberapa aplikasi email tidak akan otomatis menautkan karakter terakhir dari url. Contoh:
Visit http://example.com/foo=bar! !
!*'();:@&=+$,/?#[]
atau tidak dilindungiA-Za-z0-9_.~-
(atau karakter persen%
sebagai bagian dari pengkodean persen)