I am encoding a string that will be passed in a URL (via GET). But if I use escape, encodeURI or encodeURIComponent, &
If you did literally this:
encodeURIComponent('&')
Then the result is %26, you can test it here. Make sure the string you are encoding is just & and not & to begin with...otherwise it is encoding correctly, which is likely the case. If you need a different result for some reason, you can do a .replace(/&/g,'&') before the encoding.