Un simple archivo HTML:Cómo forzar navegador para establecer conjunto de caracteres en el encabezado HTTP de tipo de contenido
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<form method="POST" action="test.jsp" accept-charset="utf-8" method="post" enctype="application/x-www-form-urlencoded" >
<input type="text" name="P"/>
<input type="submit" value="subMit"/>
</form>
</body>
</html>
El archivo HTML es servida por el servidor utilizando cabecera Content-Type:text/html; charset=utf-8
. Todo dice: "querido navegador cuando publiques este formulario, publícalo utf-8 codificado". El navegador realmente hace esto. Cada valor ingresado en el campo de entrada será codificado en UTF-8. PERO ¡el navegador no le dirá esto al servidor! El encabezado HTTP de la solicitud posterior contendrá un campo Content-Type:application/x-www-form-urlencoded
pero el juego de caracteres se omitirá (probado con FF3.6 e IE8).
El problema es que el servidor de aplicaciones que uso (Tomcat6) espera el juego de caracteres en el encabezado Content-Type (como se indica en RFC2388). De esta manera: Content-Type:application/x-www-form-urlencoded;charset=utf-8
. Si se omite el juego de caracteres asumirá ISO-8859-1, que no es el juego de caracteres utilizado para la codificación. El resultado es datos rotos.
¿Alguien tiene una pista de cómo obligar a los navegadores actuales a agregar el juego de caracteres al encabezado Content-Type?
Me encuentro exactamente en el mismo problema, y le he pedido a FF en los grupos de google una forma de resolver este problema http://groups.google.com/group/mozilla.dev.platform/browse_thread/thread/f3fd16b217a956c6 # –