Para solucionar este problema tienes varias soluciones.
Una es cambiar las vocales con tilde por su respectivo en HTML.
<span class="codigo"> á --><span class="codigo"> &</span>aacute;
é --> <span class="codigo">&</span>eacute;
í --> <span class="codigo">&</span>iacute;
ó --> <span class="codigo">&</span>oacute;
ú --> <span class="codigo">&</span>uacute;
ñ --> <span class="codigo">&</span>ntilde; </span>
Otra opción sería utilizar una función de PHP que te las reemplaza automáticamente.
La función es htmlentities()
Otras alternativas a las que se plantean son:
- Usar DOCTYPE y <meta>:
- Usar las funciones de conversión de ISO a UTF:
http://www.php.net/manual/en/function.utf8-encode.php
http://www.php.net/manual/en/function.utf8-decode.php
Es importante que antes de aplicar cualquiera de los pasos definas cómo quieres que tu script trabaje, en qué codificación de caracteres estará, pues "hacks" momentáneos o improvisados pueden derivar en que tu página se vea "a la de Dios".