no, allora, htmlspecialchars come anche htmlentities possono essere utili per svariate situazioni, come ad esempio inviare al browser un testo che deve stare dentro una casella di input o dentro una casella di testo altrimenti si corre il rischio che i valori inseriti dall'utente possano variare l'html della pagina chiudendo ed aprendo tag

ma non è questo lo specifico problema!

Per risolvere il problema della codifica hai due opzioni, lanciare 2 query che la settino
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET NAMES utf8");

Qui trovi qualche info a riguardo
http://dev.mysql.com/doc/mysql/en/Ch...onnection.html

altrimenti puoi usare la funzione
http://it2.php.net/manual/it/functio...et-charset.php

ma devi avere una versione di php uguale o superiore alla 5.2.3

Ovviamente con questa soluzione quello che c'è nel db cosi rimane per il semplice motivo che variare la codifica comporta anche una variazione dei contenuti: devi lanciare uno script che legga latin1 e riscriva in UTF8

Con
http://it2.php.net/manual/it/functio...t-encoding.php

puoi verificare la codifica usata da php per la comunicazione, che non sarà UTF8