Es algo complicado. Los editores de texto (bloc de notas, notepad++, sublime text, vim, etc.) usan algo llamado "codificación" o juego de caracteres. Cuando escribes y guardas el archivo, este se guarda con un cierto juego de caracteres, por lo que debes especificar ese mismo juego en el documento HTML. Por ejemplo, si guardaste el archivo con el juego de caracteres UTF-8, entonces debes hacer lo siguiente:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" /><!-- Aquí debes especificar qué juego de caracteres utilizaste -->
<title>Inicio</title>
</head>
<body>
<p>Un párrafo con tildes.</p>
<p>Una palabra con diéresis: pingüino.</p>
</html>
Si no te funciona con utf-8 prueba con iso-8859-1:
<!DOCTYPE html>
<html>
<head>
<meta charset="iso-8859-1" />
<title>Inicio</title>
</head>
<body>
<p>Un párrafo con tildes.</p>
<p>Una palabra con diéresis: pingüino.</p>
</html>
Si este tampoco funciona, intenta cambiando las letras tildadas de esta forma:
á -> á é -> é í -> í ó -> ó ú -> ú Á -> Á É -> É etc...
En realidad, la explicaciòn de Skaparate està bien, pero a veces ni aùn "informandole" de toda clase de manera a la pàgina web de que tiene que mostrar la ñ como eñe y no como signo de interrogaciòn, pues se sigue viendo, aùn a pesar del utf8 o del iso 8859, como signo de interrogaciòn, entonces, ¿a què realmente se debe ahora?. Pues una de las explicaciones de los expertos es que quizàs el ordenador de uno, el personal, no tenga incluido en su memoria esas codificaciones, aunque se supone que a estas alturas de la vida debieran de tenerlas, pero sorpresas que da la vida. Ahora, si yo voy a un ciber y entro desde allì a mi pàgina web y veo que,. tambien al ver mi pàgina web desde otro ordenador continùan mostrtàndose los signos de interrogaciòn en vez de las letras eñes o las vocales con acento etc. etc.. Entonces es, (y es sorprendente), que sea el proveedor de su hosting. ¡¡Si!!! su hosting que no tenga aùn implementado todos los juegos de caracteres que se suelen utilizar, para que la eñe aparezca como eñe y no como signo de interrogaciòn, porque aunque se ha tratado de unificar los caracteres en un juego "universal", sea utf8 o sea iso 8859 o sea el que sea, (existen unos cuantos), por lo visto no se ha llegado a un acuerdo. Quizàs algùn dìa , algùn HTML-9 futuro, sea capaz de que solamente utilizando un juego de caracteres puedan las pàginas web mostrar la eñe como eñe. Porque hasta ahora en una misma pàgina web se puede ver que "soñando" aparece la eñe como signo de interrogaciòn, y mas adelante, en la misma pàgina "soñoliento" aparece la eñe como eñe. Por tanto , no nos queda mas que acostumbrarnos a seguir utilizando los còdigos para asegurarse de que el caracter sea el que uno qujiere que sea. Que estèn bien