A través de ajax paso valores a la base de datos de ciertos campos que los usuarios rellenan. El caso es que necesitaba convertir los acentos de dichos campos a sus entidades en HTML ("á", "ñ", etc.) y luego de buscar un poco, preparé dos funciones para hacer el encode y decode basándome en expresiones regulares.
Me gustó mucho esa alternativa, por su rapidez y el mínimo uso de recursos del navegador. Estas son las funciones que ahora tengo:
Código HTML:
var accentEncode = function (tx) { var rp = String(tx); // rp = rp.replace(/á/g, 'á'); rp = rp.replace(/é/g, 'é'); rp = rp.replace(/í/g, 'í'); rp = rp.replace(/ó/g, 'ó'); rp = rp.replace(/ú/g, 'ú'); rp = rp.replace(/ñ/g, 'ñ'); rp = rp.replace(/ü/g, 'ü'); // rp = rp.replace(/Á/g, 'Á'); rp = rp.replace(/É/g, 'É'); rp = rp.replace(/Í/g, 'Í'); rp = rp.replace(/Ó/g, 'Ó'); rp = rp.replace(/Ú/g, 'Ú'); rp = rp.replace(/Ñ/g, 'Ñ'); rp = rp.replace(/Ü/g, 'Ü'); // return rp; }; var accentDecode = function (tx) { var rp = String(tx); // rp = rp.replace(/á/g, 'á'); rp = rp.replace(/é/g, 'é'); rp = rp.replace(/í/g, 'í'); rp = rp.replace(/ó/g, 'ó'); rp = rp.replace(/ú/g, 'ú'); rp = rp.replace(/ñ/g, 'ñ'); rp = rp.replace(/ü/g, 'ü'); // rp = rp.replace(/Á/g, 'Á'); rp = rp.replace(/É/g, 'É'); rp = rp.replace(/Í/g, 'Í'); rp = rp.replace(/Ó/g, 'Ó'); rp = rp.replace(/Ú/g, 'Ú'); rp = rp.replace(/&Ñtilde;/g, 'Ñ'); rp = rp.replace(/&Üuml;/g, 'Ü'); // return rp; };
Gracias de antemano a cualquier idea o ayuda que me puedan facilitar.