Durante lo spostamento di un sito (con database) da un server Slackware ad un server CentOS 7 sono incappato in un problema di visualizzazione dei caratteri accentati sulla pagina web.
Nella prima situazione (server Slackware) i caratteri accentati venivano visualizzati correttamente ma nella seconda situazione (CentOS) comparivano sulla pagina gli oramai noti 'punti interrogativi'. Database e tabelle erano configurati in utf-8.
Il mio primo pensiero è andato subito alla configurazione del default_charset di php. Utilizzando php_info() ho controllato che il valore di default fosse settato a utf-8.
Stesso database e stessa codifica ma visualizzazione dei caratteri accentati differente. Ho quindi provato a sostituire (in CentOS) il valore di default con iso-8859-1 ed il problema magicamente è sparito.
Nonostante il problema fosse stato risolto, volevo capire il motivo per cui questo accadeva.
La mia attenzione si è quindi rivolta alla connessione (tramite PDO) che effettuavo al database. E' bastato aggiungere 'charset=utf-8' alle impostazioni di connessione al database ed il problema è scomparso.
mysql:host=$hostname;dbname=$database;charset=utf8
Questa soluzione mi ha così permesso di ottenere lo stesso risultato (visualizzazione corretta dei caratteri accentati) con la stessa configurazione nei due diversi sistemi.