E comercial/ampersand e JavaScript/AJAX

Hoje estava tendo problemas com o caracter & (e comercial/ampersand) no javaScript. O sistema é baseado em AJAX, portanto os dados ficam trafegando na forma de Query String e no fim é enviado por um Post Request.
Para não ter problema com caracteres especiais, essa query string era encodada com a função EncodeURI() do JavaScript. Aí estava o problema. Ele encoda toda a string para URI, mas não o caracter &, já que ele é usado como separador de variáveis na Query String. Tentei então usar a função escape(). Funciona, mas ferrava os acentos.
Achei que era a função escape que não entendia acento e botava caracteres estranhos no local, mas depois de muito teste acabei descobrindo que ele entendia sim os acentos, mas os passava pra latin1. Como uso padrão UTF-8, ferrei-me.
Então depois de uma pesquisada descobri a função encodeURIComponent(), esse sim vai encodar perfeitamente e respeitando o UTF-8.











