l'unico modo corretto per inviare qualcosa in get (o post con ajax) da JavaScript ad un altro linguaggio è encodeURIComponent, che in accoppiata con decodeURIComponent permette di non avere problemi di questo tipo con nessun carattere unicode (65.000 e rotti caratteri)

escape ed unescape vanno bene solo per interazioni molto semplici ma sono un modo errato di scambiare dati (e porca paletta a me e a quando non l'ho scritto nella guida).



[edit]
per l'esattezza: 65536 (2^16) , range esteso di ASCII (2^8) mentre escape dal carattere 255 in poi invece di encodare scrive una porcheria tipo %u0100 , inutile a tutti i linguaggi se non alla funzione unescape di JavaScript stesso.
Inoltre escape non encoda nemmeno altri caratteri ... tipo il "+", sempre visto come "spazio" e mai come carattere "+". encodeURI e decodeURI non encodano altri caratteri che encodeURIComponent encoda regolarmente.
Per avere queste funzioni disponibili da IE4 in su, se interessa la retrocompatibilità e dato che encodeURIComponent mi sembra non ci sia nemmeno in IE 5.5, potete usare la JSL