Ciao a tutti,
il mio problema è semplice ma non so come risolverlo: praticamente ho una pagina codificata in UTF-8, in cui viene visualizzato un messaggio d'errore con caratteri ISO-8859-1.
In parole povere se viene riscontrato un errore, invio un header alla pagina che lo deve visualizzare, così:
Codice PHP:
$msg = "immagine troppo grande, prova a caricare una foto più piccola.";
header("location:/?a=upload&m=" . $msg);
Poi però il messaggio non viene visualizzato correttamente. Il carattere "ù" non è codificato nel modo giusto. Ho provato a sostituirlo con la corrispettiva entità ma in questo caso il messaggio viene troncato per via del carattere &, che nel contesto della barra degli indirizzi ha un altro significato.
Cercando per il forum ho trovato le funzioni utf8_encode() e utf8_decode() che dovrebbero essere proprio quelle che mi servono, eppure non sono riuscito a farle funzionare.
Ecco quello che ho fatto:
Codice PHP:
//pagina che codifica il messaggio
$msg = "immagine troppo grande, prova a caricare una foto più piccola.";
utf8_encode($msg);
header("location:/?a=upload&m=" . $msg);
//pagina che riceve il messaggio e lo decodifica
$msg = $_GET['m'];
utf8_decode($msg);
echo $msg;
Mi fate capire dove sbaglio?
EDIT: Niente ho risolto da solo bastava memorizzare il risultato di utf8_decode($msg); e non decodificare il messaggio nella pagina che lo riceve, perché sarebbe già codificato in ISO-8859-1 che è quello che mi serve!
Ecco il codice, sperando possa essere utile a qualcuno:
Codice PHP:
//pagina che codifica il messaggio
$msg = "immagine troppo grande, prova a caricare una foto più piccola.";
$msg_encoded = utf8_encode($msg);
header("location:/?a=upload&m=" . $msg_encoded);
//pagina che riceve il messaggio codificato ISO-8859-1
$msg = $_GET['m'];
echo $msg;