Cómo forzar al navegador a configurar el juego de caracteres en el encabezado http de tipo contenido
Un archivo HTML simple:
<!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 servidor sirve el archivo HTML mediante el encabezadoContent-Type:text/html; charset=utf-8
. Todo dice: "querido navegador cuando publicas este formulario, publícalo codificado en utf-8". El navegador realmente hace esto. Cada valor ingresado en el campo de entrada estará codificado en UTF-8.PERO ¡el navegador no le dirá esto al servidor! El encabezado HTTP de la solicitud de publicación contendrá unContent-Type:application/x-www-form-urlencoded
pero se omitirá el juego de caracteres (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). Me gusta esto: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 son datos rotos.
¿Alguien tiene idea de cómo forzar a los navegadores actuales a agregar el juego de caracteres al encabezado Content-Type?