encodeURIComponent и encodeURI отличаются набором символов, которые кодируют, причем у encodeURIComponent набор по-больше, так как он рассчитан на значение или название параметра, в отличие от encodeURI (весь URI)
для POST тоже надо пользоваться encodeURIComponent
а зачем эмулировать htmlspecialchars я до сих пор не знаю
p.s. есть еще такая вот ссылка -
http://xmlhttprequest.ru/#encoding
p.p.s. какое практическое применение у encodeURI я даже не знаю