Dunque, mi sono appena letto circa 100 post del forum che parlano di utf-8 e mi sono venuti 100 dubbi c'è scritto tutto e il contrario di tutto.
Ora, senza rimandarmi ai soliti link che ho già letto, mi piacerebbe chiarirmi le idee in maniera definitiva.
Vediamo se riesco a scrivere un po' tutto....
Le parti che sono fondamentali sono:
- Collation tabella e campi in utf8_general_ci
- Settare il charset su utf-8 nel meta o meglio lato server con:
Codice PHP:
header("Content-type: text/html;charset=utf-8");
Questo nelle pagine del sito sia nella parte di amministrazione (CMS) in modo che i vari dati passati dai form vengano gestiti appunto in utf-8
Poi iniziano alcuni dubbi, questo perchè leggendo alcuni post, invece di chiarirmi alcune lacune mi si sono incasinate ancora di più.
Non ho mai avuto grossi problemi, ma ora vorrei appunto chiarire questi dubbi.
1) E' necessario mettere subito dobo la selezione del DB la query:
Codice PHP:
mysql_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'");
?
2) Come gestire i dati nel db? Inserirli nudi e crudi o codificarli per es. con htmlentities?
C'è chi dice di lasciarli nudi e crudi per lasciare puliti i dati inseriti, chi invece dice di convertirli con htmlentities o seplicemente:
Codice PHP:
htmlentities($testo);
o
Codice PHP:
htmlentities($testo,ENT_QUOTES,'UTF-8');
Cedo che la seconda sia la più corretta.
A questo punto se li abbiamo codificati con htmlentities in output non dovremmo riconvertirli, altrimenti a che serve?
Quindi in output la frase "pluto è un cane" diventerà: "pluto & egrave; un cane".
Dovremmo riconvertirli con html_entity_decode se andiamo a modificarne il valore tramite CMS in un form.
3) Utilizzando il charset utf-8 o più in generale è meglio usare: mysql_real_escape_string o addslashes per gli escape?
4) Ciò considerato, dovendo magari gestire rss o pdf generati per es. da FPDF (che se non ricordo male non supporta utf-8) come è meglio agire senza complicarsi la vita?
5) Sempre tenendo conto di quanto detto, dovendo gestire un sito in più lingue, se codifico i testi con htmlentities posso avere problemi di sorta?
Vedimo se si riesce a fare una bella discussione e trarne alla fine una conclusione definitiva, perchè io di post ne ho letti un centinaio, ma la lista continuava, quindi sembra essere un problema o un dubbio di molti.
Grazie