In conclusione...
L'unico modo per venirne a capo è stato usare escape al posto di encodeURI. Ho cercato a lungo su internet, ma tutti quelli che avevano il mio problema hanno risolto sempre con escape.
Grazie per i suggerimenti. Sono stati molto di aiuto.
Penso che aprirò un tread simile su javascript, magari qualcuno ha una soluzione migliore.