Caratteri, capiamoci qualcosa!
Sposto sul blog questo vecchio articolo che avevo pubblicato un pò di tempo fa!
Uno dei problemi che spesso si incontra sviluppando pagine web con PHP e MySLQ è quello dei caratteri, soprattutto quelli accentati o quelli aprticolari come l’euro €.
Il tutto dipende da errori di conversione fra diversi charset, infatti, spesso inconsapevolmente, il programmatore principiante non presta attenzione a questo aspetto durante lo sviluppo lasciando le impostazioni di default che spesso non coincidono.
Il database MySQL per esempio imposta come charset di default il latin1 mentre il web server solitamente utilizza utf-8. Durante questa conversione si possono creare delle imprecisioni che portano alla mancata visualizzazione dei caratteri.
Come risolvere il problema?
Semplice basta impostare tutto come utf-8 che è il charset consigliato dal w3c.
Allora per prima cosa impostate il vostro editor per scrivere con il charset utf-8.
Inserite in ogni pagina html, xhtml quale charset viene utilizzato con la seguente direttiva:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Quando create il database MySQL specificate come default charset utf-8 e come collation utf-8_general_ci.
Bisogna poi infine fare attenzione ad un aspetto critico. MySQL usa come default charset latin1 anche per il client e la connessione, queste opzioni sono configurate nelle variabili del server.
Potete procedere in due modi:
- Modificate i valori di default del server MySQL ma fate attenzione perché ciò influisce sui database e le applicazioni precedenti.
- Eseguire seguenti due query subito dopo la connessione:
SET NAMES utf8
SET CHARACTER_SET utf8
Assicuratevi che anche il web server utilizzi il charset uft-8.
Ho fatto svariate prove e non ho avuto problemi con moltissimi caratteri sia in inserimento sul database che il lettura, se avete ulteriori informazioni per completare questo piccolo articolo inviatemele pure e le pubblicherò col vostro nome.



Commenti recenti