Infatti no, tutti i caratteri iso-8859-1 non hanno corrispondenza con tutti i caratteri UTF-8.Originariamente inviato da nourdine
si mail dubbio che mi resta è:
è OGNI caratteri iso-8859-1 codificato nello stesso modo anche in utf-8??
mi sembra logico pensare di si visto che utf-8 estende le codifche iso. per altro non ne posso esserne certo ed è per questo che chiedo ...
in effetti se cosi fosse (iso sottoinsieme di utf-8) non ci dovrebbero essere problemi a offrire una stringa iso-8859-1 (mandata da php) ad ajax. visto che javascript è unicode dovrebbe essere in grado di interpretare correttamente anche iso. ma sempre e solo nell'ipotesi che iso sia un sottoinsieme di unicode.
mi è infatti successo di spedire a javascript delle stringhe iso-8859-1 che venivano male codificate nel browser ... il che mi fa pensare che la mia domanda di partenza (è OGNI caratteri iso-8859-1 codificato nello stesso modo anche in utf-8) si merito un secco NO!
devo studiarmele ste robe ... è che non ho tempo
ciao
Ma tu di questo non devi preoccuparti per quello che ti ho spiegato: la codifica in UTF-8 di un carattere non facente parte del charset UTF-8 viene fatta in 2 byte, che poi UNICODE può tranquillamente interpretare.
Tu però non vedi per niente quel passaggio, perché passi all'utf8_decode() le stringhe solo prima di restituirle a JavaScript.
In pratica:
Anche se quella stringa da 14 caratteri trasformata in UTF-8 venisse trasformata in modo astruso e illeggibile (codifica di un carattere in più byte) Ajax la leggerà in UNICODE decodificando correttamente la tua stringa.Codice PHP:
<?php
// stampo la stringa da inviare a JavaScript:
$string = "àèéìòù@ç#§£$%&";
echo utf8_encode($string);
?>
Al contrario per inviare stringhe da JavaScript a PHP:
codice:<script type="text/javascript"> <!-- function ajaxblabla() { var msg = "àèéìòù etc..."; // tuo codice per la chiamata asincrona... xmlHttp.open("GET", "slavePage.php?msg=" + encodeURIComponent(msg), true); xmlHttp.send(null); // blablabla... } //--> </script>
Il fatto è che normalmente una pagina che invia i dati ad Ajax non viene aperta in altri modi o inclusa in altri script lato server per essere stampata a schermo, quindi la codifica intermedia in utf-8 non deve essere vista e non costituisce un problema.
Spero di aver risposto al tuo quesito.

Rispondi quotando