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
Infatti no, tutti i caratteri iso-8859-1 non hanno corrispondenza con tutti i caratteri UTF-8.
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:
Codice PHP:
<?php
// stampo la stringa da inviare a JavaScript:
$string = "àèéìòù@ç#§£$%&";
echo utf8_encode($string);
?>
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.
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.