js urlencode
/* There are 11 characters which are not encoded by encodeURI,
but encoded by encodeURIComponent. */
encodeURI("test uri");
// "test%20uri"
encodeURI("test uri");
// "test%20uri"
encodeURI("test uri/with a slash");
// "test%20uri/with%20a%20slash"
encodeURIComponent("test uri/with a slash");
// "test%20uri%2Fwith%20a%20slash"