domenica 21 giugno 2009
Php e accenti: caratteri strani nei form o da mysql. La codifica Utf8
08:04 |
Pubblicato da
Gordon Comstock |
Modifica post
Indipendentemente da quante volte l'avrò fatto, e ormai sono tante, ci casco sempre e mi scordo di convertire i caratteri dall'Utf8 a Unicode, o a entità HTML.
Il risultato sono lettere accentate che appaiono così: è
Il motivo è che il form, o magari il feed RSS o il database mysql dal quale arriva il testo hanno usato la codifica Utf8, mentre la pagina che le visualizza è in Unicode.
Quindi a futura memoria:
Che stampa correttamente 'è'. Possiamo fare un passo in più e scrivere:
Che invece di 'è' restituisce è ed è anche una saggia misura di sicurezza per evitare l'inserimento di HTML pericoloso. Soltanto, ricordiamoci di farlo prima di aggiungere i nostri tag html.
Ad esempio, se costruiamo una lista da un feed di twitter, all'interno del ciclo scriveremo qualcosa come:
invece di passare il risultato finale di $testo alle due funzioni. Perché a quel punto perderemmo gli '<li>' costruiti per ogni elemento.
Naturalmente, questo rallenta l'esecuzione perché sono necessarie tante chiamate a funzioni quanti sono gli elementi.
Il risultato sono lettere accentate che appaiono così: è
Il motivo è che il form, o magari il feed RSS o il database mysql dal quale arriva il testo hanno usato la codifica Utf8, mentre la pagina che le visualizza è in Unicode.
Quindi a futura memoria:
$stringa_da_ripulire='è';
utf8_decode ($stringa_da_ripulire);
Che stampa correttamente 'è'. Possiamo fare un passo in più e scrivere:
htmlentities (utf8_decode ($stringa_da_ripulire));
Che invece di 'è' restituisce è ed è anche una saggia misura di sicurezza per evitare l'inserimento di HTML pericoloso. Soltanto, ricordiamoci di farlo prima di aggiungere i nostri tag html.
Ad esempio, se costruiamo una lista da un feed di twitter, all'interno del ciclo scriveremo qualcosa come:
$testo.='<li>'.htmlentities (utf8_decode ($stringa_da_ripulire)).'</li>';
invece di passare il risultato finale di $testo alle due funzioni. Perché a quel punto perderemmo gli '<li>' costruiti per ogni elemento.
Naturalmente, questo rallenta l'esecuzione perché sono necessarie tante chiamate a funzioni quanti sono gli elementi.
Iscriviti a:
Commenti sul post (Atom)
Informazioni personali
Pagine inutili
Archivio blog
Etichette
- apache (2)
- arretratezza (2)
- article spinning (2)
- css (2)
- inutilità (2)
- php (2)
- web design (2)
- wordpress ovh (2)
- barra fondo schermo (1)
- cinema (1)
- css bottom (1)
- domini multipli ovh (1)
- elemento fisso css (1)
- ftp (1)
- geo localizzazione (1)
- google (1)
- mod_rewrite (1)
- mysql (1)
- permessi (1)
- position fixed (1)
- rss (1)
- sicurezza (1)
- toolbar fissa fondo schermo (1)
- twitter (1)
2 commenti:
finalmente! ecco risolto un difficle problema
Grazie
finalmente! ecco risolto un bel problema, grazie
Posta un commento