Foros del Web » Programación para mayores de 30 ;) » Java »

Problema de codificación

Estas en el tema de Problema de codificación en el foro de Java en Foros del Web. Buenos días a todos, Me he encontrado con un problemilla a la hora de pasar las variables de un formulario en jsp, a una pagina ...
  #1 (permalink)  
Antiguo 30/05/2013, 03:34
 
Fecha de Ingreso: marzo-2006
Mensajes: 19
Antigüedad: 18 años, 1 mes
Puntos: 2
Problema de codificación

Buenos días a todos,

Me he encontrado con un problemilla a la hora de pasar las variables de un formulario en jsp, a una pagina en php a continuación os pongo el codigo del jsp.


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<?xml version="1.0" encoding="utf-8" ?>
<%@ page import="com.loquesea.control.*"%>
<%@ page import="java.util.Date"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.text.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>
<%@ page import="com.twiek.Utils.Base64"%>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>


<%String msdid = null;
String firstName = null;
String lastName = null;
String url = "http://www.dondesea.es/galeria.php";
String userId = null;
String cc = null;
String specialty = null;
String zipCode = null;
String Email = null;
String PhoneNum = null;
String lng = null;




// Se crea un objeto map invocando el método getURLParameters de la clase RoutingController
HashMap<String,Object> map = RoutingController.getURLParameters(request);

if(null != map && map.containsKey("MSDID")) {

msdid = (String) map.get("MSDID");
firstName = (String) map.get("FirstName");
lastName = (String) map.get("LastName");
msdid = msdid.toUpperCase();
userId = (String) map.get("user_id");
cc = (String) map.get("cc");
specialty = (String) map.get("specialty");
zipCode = (String) map.get("ZipCode");
Email = (String) map.get("Email");
PhoneNum = (String) map.get("PhoneNum");
lng = (String) map.get("lng");





}


//codifico los datos para que no se vean en la url
msdid = Base64.encode(msdid);
firstName = Base64.encode(firstName);
lastName = Base64.encode(lastName);
userId = Base64.encode(userId);
cc = Base64.encode(cc);
specialty = Base64.encode(specialty);
zipCode = Base64.encode(zipCode);
Email = Base64.encode(Email);
PhoneNum = Base64.encode(PhoneNum);
lng = Base64.encode(lng);

response.setHeader("Content-Type", "text/html; charset=UTF-8");
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");






%>


<html>

<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />


<title>Untitle document</title>
<script language="javascript">

function submitform(){
document.loginform.submit();
}

</script>
</head>
<body onload="submitform();">
<form action="<%=url%>" method="get" name="loginform" style="display:none;">
<input type="hidden" name="msd_id" id="msd_id" value="<%=msdid%>">
<input type="hidden" name="first_name" id="first_name" value="<%=firstName%>">
<input type="hidden" name="last_name" id="last_name" value="<%=lastName%>">
<input type="hidden" name="user_id" id="user_id" value="<%=userId%>">
<input type="hidden" name="cc" id="cc" value="<%=cc%>">
<input type="hidden" name="specialty" id="specialty" value="<%=specialty%>">
<input type="hidden" name="zipCode" id="zipCode" value="<%=zipCode%>">
<input type="hidden" name="email" id="email" value="<%=Email%>">
<input type="hidden" name="phonenum" id="phonenum" value="<%=PhoneNum%>">
<input type="hidden" name="lng" id="lng" value="<%=lng%>">




<input type="hidden" name="t" id="t" value="<%=request.getParameter("t")%>">
<input type="hidden" name="e" id="e" value="<%=request.getParameter("e")%>">
<input type="hidden" name="buscador" id="buscador" value="<%=request.getParameter("buscador")%>">
<input type="hidden" name="f" id="f" value="<%=request.getParameter("f")%>">
<input type="hidden" name="p" id="p" value="<%=request.getParameter("p")%>">
<input type="hidden" name="_pagi_pg" id="_pagi_pg" value="<%=request.getParameter("_pagi_pg")%>">





</form>
</body>
</html>


El caso es que la variable buscador cuando pasa a galeria.php por el get las tildes por ejemplo las cambia por %3F%3F, asi que si busco síndrome sale s%3F%3Fndrome, tambien si realizo un echo de esa variable sale s??ndrome.

He estado buscado como solucionarlo en varios sitios y mas o menos lo que dicen es que en el fichero server xml le añada la codificacion utf-8

<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
useBodyEncodingForURI="true" URIEncoding="UTF-8"/>


Ademas de añadir esta linea en el jsp:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

Pero sigue sin funcionar, me debe faltar en algún sitio mas poner la codificación a utf-8 pero no se donde, si alguien sabe como solucionarlo le agradecería mucho que me comentase como hacerlo.

Un saludo.
  #2 (permalink)  
Antiguo 30/05/2013, 03:59
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Problema de codificación

Los caracteres "extraños" por url se pasan con ese formato, ya que no todos los caracteres pueden formar parte de una url.

Java tiene el URLDecoder y supongo que PHP también.

http://php.net/manual/en/function.urldecode.php

Imagino que estás leyendo los parámetros directamente de la URL, cuando imagino que existirá algún objeto/variable donde estén ya convertidos, por lo menos en java es así.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: clase, html, jsp, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:53.