Si no me equivoco, puede depender del browser. Si tu browser por defecto tiene activado el utf8, puede que esté interpretando los caracteres correctamente, pero al pasarlos por un include, no los interpreta, pero la verdad no sé
.
Lo que puedes intentar, es guardar los trozos de html en archivos .html, no .php. Luego los reemplazas en el index con str_replace, a ver si funciona.
Tengo un código que hice alguna vez que dejé botado
, en el cual el index tiene charset utf8, y un menu en un .html aparte. Este menú lo tomo con file_get_contents, y ese contenido lo reemplazo en el index. Y me funciona bien.