Originariamente inviato da nourdine
si ci siamo abbastanza! la risposta fondaemntale èp stata:

Infatti no, tutti i caratteri iso-8859-1 non hanno corrispondenza con tutti i caratteri UTF-8.

io ero convinto di si anche se avevo prove empiriche del contrario! quindi ho capito che bisogna sempre usare utf8_encode quando si passa da php ad ajax.

ora però non capisco il senso di encodeURIComponent()

in che codifica trasforma il suo argomento???
Quando con Ajax invii dati via GET, è chiaro che la query string debba essere codificata per essere adatta al trasferimento via URL, ovvero URLencoded.
L'URLencoding prevede la trasformazione dei caratteri speciali con il simbolo "%" seguito dal codice esadecimale corrispondente al carattere (se conosci PHP avrai avuto a che fare con la funzione urlencode($string)).

Una funzione che in JavaScript si avvicina a URLencode è escape(), a lungo utilizzata per questo scopo ma erroneamente, poiché non è in grado di codificare in modo standard o comprensibile tutti i caratteri definiti da UNICODE.

La codifica più adatta, per inviare, ricevere o leggere caratteri è la UTF-8.
Per essere quindi certi che non ci saranno problemi di comunicazione tra le stringhe JavaScript ed il linguaggio server-side è sempre consigliabile sfruttare questa codifica.

L'unica funzione di JavaScript in grado di convertire correttamente le stringhe in UTF-8 è la funzione encodeURIComponent.