Лучший способ кодирования специальных символов в URL-адресе

Каков наилучший способ кодирования специальных символов в URL-адресе? Скажем, я передаю переменную от javascript к скрипту php следующим образом:

http://example.com/my sp3c!al var!a$le 

Каков наилучший способ кодирования специальных символов (например, whitespace,!, $, /, \ И т. Д.)? Есть ли способ в javascript для его кодирования с соответствующей функцией в php для его декодирования?