Ho dei testi, che devono essere inseriti dagli utenti, e per la quasi totalità in lingua straniera. Ciò comporta un uso di caratteri speciali abbastanza frequente, e oltretutto spesso capita che il testo inserito sia stato scritto (formattato) in programmi tipo Word, e quindi porta con se altri caratteri strani ...
Per ovviare all'inconveniente, in fase di richiamo dei testi sulla pagina intervengo così:
Codice PHP:
$txt = str_replace("’","'","$txt");
$txt = str_replace("è","è","$txt");
$txt = str_replace("à","à","$txt");
$txt = str_replace("ò","ò","$txt");
$txt = str_replace("ì","ì","$txt");
$txt = str_replace("ù","ù","$txt");
$txt = str_replace("é","é","$txt");
$testo = str_replace("…","...","$testo");
$testo = str_replace("“","","$testo");
$testo = str_replace("”","","$testo");
$testo = str_replace("í","í","$testo");
$testo = str_replace("ó","ó","$testo");
Va tutto bene, in tutte le pagine in cui ho inserito questo codice. Però, c'è una pagina il cui contenuto cambia in base al valore settato in un cookie: se l'utente è già stato su quella pagina, c'è una chiamata Ajax che carica un contenuto diverso da quello standard; nella fattispecie, si tratta di una pagina .php, con (tra l'altro) il codice di cui sopra.
La cosa strana è che, quando questa pagina viene caricata all'interno dell'altra, la funzione di correzione dei caratteri non funziona - il testo viene disseminato di ? - mentre se la carico direttamente nel browser è tutto a posto!
Com'è possibile, visto che comunque il php agisce lato server, e quindi - qualunque cosa possa esserci nella pagina in cui viene caricato - non dovrebbe esserne influenzato?
E comunque, avete idea del perché possa accadere?