Quando con Ajax invii dati via GET, è chiaro che la query string debba essere codificata per essere adatta al trasferimento via URL, ovvero URLencoded.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???
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.