Comunidad de diseño web y desarrollo en internet online

Problema con variable enviada por URL (JSP)

Citar            
MensajeEscrito el 10 Ago 2011 06:05 am
Hola lectores.

He creado un tipo buscador de alumnos para un sistema escolar, la manera en que funciona es la siguiente:

Tengo en la página principal un input type text en el cual introduzco el nombre o apellido a buscar y este es enviado por URL a otro archivo (también JSP) que recibe la variable y la ejecuta en una consulta SQL, una vez ejecutada este archivo es cargado median AJAX en la página principal. Hasta aquí todo bien, el problema es cuando intento enviar nombre o apellidos con acentos, entonces la letra que lleva acentos la muestra con un caracter raro y pues obviamente la consulta SQL no muestra resultado alguno porque los datos en la BD están almacenados me forma correcta (con acentos).

Un ejemplo de como envío la URL es:

Código :

http://localhost:8080/dexter/modulos/submodulos/caja/submodulo1.jsp?like=López


Ya he escrito en el encabezado de la página el código para que interprete utf-8:

Código Java :

<%@page language="java" contentType="text/html; charset=utf-8" import="mx.edu.utdelacosta.*, java.util.*, java.text.*, java.net.*"%>


También le he modificado el tipo de lectura al request:

Código Java :

request.setCharacterEncoding("utf-8");


Y la manera en que trato de decodificar la variable es la siguiente:

Código Java :

String like=request.getParameter("like");  
   like=like==null?"":java.net.URLDecoder.decode(like,"UTF-8").trim();


También he probado decodificar directamente:

Código Java :

like = request.getParameter("like");


Y usando una clase que tengo exclusivamente para parsear datos:

Código Java :

RequestParamParser parser = new RequestParamParser(request);
String like = parser.getStringParameter("like", "");


Pero el problema continua, también los intente usando iso-8859-1 y nada.

Espero alguien conozca una forma diferente de hacerlo y así probar si funciona, o si pueden identificar el error pues mucho mejor jeje xD

De antemano gracias y saludos a todos

Por Kompanhero

21 de clabLevel



Genero:Masculino  

Inocente hasta probar lo contrario.

chrome
Citar            
MensajeEscrito el 10 Ago 2011 06:16 am
He descubierto algo: este problema NO ocurre cuando utilizo Internet Explorer PERO SI al usar Google Chrome y Mozilla Firefox e imagino que es lo mismo con el resto de los navegadores.

Entonces la pregunta se "reduce" a: ¿Alguien sabe cómo hacerlo funcionar en otro navegador que no sea IExplorer?

PD: Pongo se "reduce" entre comillas porque no estoy seguro que se reduzca jeje, quizá sea más dificil :S

Por Kompanhero

21 de clabLevel



Genero:Masculino  

Inocente hasta probar lo contrario.

chrome
Citar            
MensajeEscrito el 10 Ago 2011 04:05 pm
Probando con los tipos de codificación que tiene Google Chrome descubrí que con la codificación "Windows-1252" si se interpretan de manera correcta los caracteres pero, cuando reiniciaba el navegador se volvía a activar la codificación "utf-8", entonces puse esta codificación directamente en el encabezado de mi página quedando así:

Código Java :

<%@ page contentType="text/html; charset=Windows-1252" language="java" import="mx.edu.utdelacosta.*, java.sql.*, java.util.*" errorPage="error.jsp" %>


E hice lo mismo en request.setCharacterEncoding.

De esta manera funciona tanto en Chrome como en Firefox e imagino que es igual con los demás navegadores.

Quizá no sea la mejor solución puesto que me comenta @Darel que como es una codificación creada por microsoft quizá sea privativa, pero la usaré en lo que microsoft se entera, la verdad no creo que en una auditoria me pregunten :"¿Qué tipo de codificación usas en tu sistema?" o tal vez en lo que ellos se enteran resuelva el problema de otro modo xD

Como dije no creo que haya problema al usarla pero si alguien sabe algo al respecto le agradecería que me lo dijera.

Sin más gracias a todos los que se dieron tiempo de leer el post, se que su intención era ayudar. Saludos a todos :)

Por Kompanhero

21 de clabLevel



Genero:Masculino  

Inocente hasta probar lo contrario.

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.