Algunas veces al momento de trabajar con javaScript nos encontramos con que no reconoce los caracteres acentuados o las letras ñ, muchas veces ni cuenta nos damos de que ese error esta latente solo hasta cuando probamos nuestra aplicacion, puede ser que no le demos mucha importancia a esto (y dependiendo para que utilicemos js puede que no la tenga), sin embargo si realizamos las validaciones de nuestro sitio con js puede que este error se convierta en una lata, asi que aqui hay algunas recomendaciones para solucionar este problema.Casos de error
1) Regularmente con la codificacion utf-8 no debe de haber ningun problema (si no sabes que codificacion tienen tus paginas busca la palabra
charset que se encuentra dentro de la etiqueta
meta) sin embargo si es asi recomiendo que uses la codificacion española, observa la siguiente linea y prueba si el problema esta solucionado.
< meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
o bien
< meta http-equiv="content-type" content="text/html; charset=es-iso-8859-1" />
el charset debe de ser
iso-8859-1 o
es-iso-8859-1 que es la codificacion española, con esto en las expresiones regulares ya no tendremos problemas de validar las ñ's.
2) Bueno esta mas que ser la solucion 2 es una extencion de la primera, una vez que cambiamos el charset si estamos interactuando con una base de datos por ejemplo MySQL puede que hallamos observado que los acentos y palabras con ñ simplemente no los guarda, entonces diremos bonita solucion, me arregla un lado pero me descompone otro :P, bueno esto pasa por que sinos fijamos bien en la estructura de nuestra tabla veremos que en la columna cotejamiento tenemos definida la codificacion estandar utf y como ahora estamos usando una codificacion diferente, es logico que la base de datos no guarde la informacion de la manera que es debido, esto se soluciona facilmente cambiando el cotejamiento a uno compatible con nuestro tipo de codificacion, normalmente es un tipo spain o un tipo latin :)

3) Como habia comentado, es raro que la codificacion utf-8 nos de problemas, pero se puede dar la situacion de que la codificacion no sea el problema si no la incompatibilidad entre codificaciones, me explico, a mi me paso lo siguiente:
Tenia un archivo js externo y mi codificacion de paginas era la estandar es decir utf-8, al checar otras paginas en las que usaba expresiones regulares con la misma codificacion, note que no tenia ningun problema con la "ñ" sin embargo en esa pagina donde la evaluacion de los campos se hacia en el archivo externo simplemente no reconocia la ñ como caracter aunque la incluyera explicitamente (que es lo que hay que hacer) en mi expresion regular, no daba con el por que hasta que me di cuenta que como el archivo externo lo habia generado con el blog de notas de windows (de una u otra forma simpre windows tiene la culpa :P broma - broma fue mi estupidez)
la codificacion del documento habia sido
Unicode en vez de
utf-8 lo que hice a continuacion fue cambiar la codificacion de la pagina (eso es un decir por que la verdad cree un nuevo archivo que guarde con codificacion
utf-8 e hice un copy - paste de mi archivo original al nuevo :D) y con esto como por arte de magia se soluciono el problema :), verifiquen esto por que puede que ahi radique el error.
4) De echo esta solucion debio de ir como numero 1, sin embargo no me acorde hasta que estaba escribiendo el punto anterior, como mencione si usamos expresiones regulares para validar campos una expresion comun es hacer que el campo solo acepte letras eso seria mas o menos algo asi:
/^[a-zA-Z]$/ y listo, sin embargo la "
ñ" como muchos sabemos no forma parte del alfabeto americano, britanico etc, etc por lo que hay que agregar esta letra de forma explicita, haciendo:
/^[a-zA-Z ñ Ñ]$/ y con esto tendremos solucionado el problema, independientemente de las soluciones anteriormente vistas,
esta es una correccion que por default debera ir para que mi expresion acepte ñ's perdon por ponerla hasta este punto :P que quieren se me paso :).
como nota: Aunque por deduccion ya lo debieron de haber supuesto(redundate, reundate :P), para los acentos es igual es decir deberan agregarlos explicitamente /^[a-zA-Z ñ Ñ á Á éÉ íÍ óÓ úÚ]$/
traten de intentar esta solucion antes que las anteriores y espero que con esto quede todo resuelto :).
5) Este es el ultimo punto y mas que una solucion es un truco muy util para estos problemas de codificacion, sin embargo alejandonos un poco del titulo, este es un truco para php, que por medio de la funcion
mb_convert_encoding es capaz de cambiar la codificacion de los caracteres de un bloque de texto determinado:
$tex = mb_convert_encoding($texto, “ISO-8859-1?, “UTF-8?);
o bien
$tex = mb_convert_encoding("Ñoño nuñes tiene gripíta", “ISO-8859-1?, “UTF-8?);
Bueno es todo en este post espero que alguna de estas soluciones les sirva. =)