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