Redirección de servlet a URL con UTF-8 (o encabezado HTTP con UTF-8): visto en Google App Engine (GAE)

Aquí está mi código (visto en Google App Engine)

public void doGet(HttpServletRequest request, HttpServletResponse response) {       
    response.setCharacterEncoding("UTF-8");
    response.setContentType("text/html; charset=UTF-8");
    response.setHeader("testHeader1", "hi");  // Works fine
    response.setHeader("testHeader2", "שלום"); // Header not visible on Chrome client
    response.sendRedirect("/myUrl#שלום"); // Redirect does not work on browser (302 sent but Location header is absent)

¡Gracias!

preguntado el 12 de junio de 12 a las 12:06

1 Respuestas

La RFC 2047 especifica acerca de los caracteres que no son ASCII en los encabezados, pero la mayoría de los servidores y navegadores aún no son compatibles.

Por lo tanto, si desea enviar caracteres que no sean ASCII, debe codificar el texto en ASCII y enviarlo.

Puedes usar el java.net.URLEncoder para codificar mientras se redirige y java.net.URLDecoder para decodificar en el otro extremo.

Respondido el 12 de junio de 12 a las 12:06

Gracias, pero entonces, ¿cómo redirijo a una URL que incluye caracteres que no son ASCII (por ejemplo, en el fragmento #)? user1176505

Edité mi respuesta. por favor, compruebe - Ramesh PVK

Gracias, pero no puede "decodificar" explícitamente una ubicación de redireccionamiento 302 ya que el navegador procesará eso, no mi cliente. user1176505

En la respuesta de redireccionamiento, ¿de qué sirve enviar encabezados personalizados? - Ramesh PVK

Pero descubrí que si redirijo a una versión codificada de Url del fragmento #, el navegador acepta esa redirección, por lo que esta solución está bien, así que acepto la respuesta, gracias. - user1176505

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.