Hace algunos días, programando unos scripts en los que enviaba una petición a un servlet de Java a través de AJAX, me encontré con el siguiente mensaje de error en la consola, en mi caso, de Apache Tomcat:
02-abr-2011 23:50:29 org.apache.tomcat.util.http.Parameters processParameters ADVERTENCIA: Parameters: Character decoding failed. Parameter skipped.{id=[Ljava.lang.String;@137c90d, id=[Ljava.lang.String;@1709902, nbsp; <span class=[Ljava.lang.String;@14d626e}java.io.CharConversionException: EOF
Lo que en un primer momento tenía pinta de ser uno de tantos problemas que te vuelven loco buscando soluciones por internet, pero sin embargo la solución era mucho más sencilla de lo esperado.
Dentro de la colección de parámetros que construía para enviar hacia el servlet de Java, podían existir en ocasiones caracteres especiales tales como ‘%’, ‘$’, etc, que generaban el error mencionado: Character decoding failed.
La solución a este problema pasaba simplemente por codificar la cadena a enviar por AJAX en formato unicode, y para ello utilizaremos la función de javascript escape.
El código quedaría parecido a estas líneas:
var params = "id=" + textAreaName + "&value=" + escape(text); $.ajax({ url: "/MyApp/ajax/http/edit?id=" + id, type: 'GET', data: params, success: function(){ // your code } });
Tags: ajax, java, javascript