En la base de datos es importante tener en cuenta el cotejamiento que utilizaste.
 
Por ejemplo, deberías usar alguno como latin1 o utf8_spanish_ci por ejemplo, o sea, uno que soporte los caracteres hispanos. 
Luego el problema no es directamente de Javascript tampoco, es más de un lenguaje de servidor (seguramente en tu caso php). Esto se debe a que una vez que php traiga los datos como corresponde (o sea, con ñ y tildes), al plasmarlas en el html, éstas figurarán como sus propios caracteres, que no son soportados por html, y van a aparecer por ese motivo caracteres extraños. 
Lo que tienes que hacer, es definir una función propia con la cual transformar al imprimir los caracteres hispanos a sus correspondientes en html. Esa función podría ser por ejemplo:    
Código php:
Ver original- function properHTML($cadena) 
- { 
-     $buscar = array("á", "é", "í", "ó", "ú", "ñ", "Á", "É", "Í", "Ó", "Ú", "Ñ") 
-     $reemplazar = array("á", "é", "í", "ó", "ú", "ñ", "Á", "É", "Í", "Ó", "Ú", "Ñ"); 
- } 
Le pasas la cadena que quieres "normalizar", y devolverá la misma cadena, pero con sus equivalentes válidos de acentos y ñs (puedes agregarle además cualquier caracter que desees). 
Saludos 
