Comment forcer le navigateur à définir le jeu de caractères dans l'en-tête HTTP content-type

Un fichier 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>

Le fichier HTML est servi par le serveur en utilisant l'en-tête Content-Type:text/html; charset=utf-8. Tout le dit: "chers navigateur lorsque vous postez ce formulaire, s'il vous plaît poster codé en utf-8". Le navigateur en fait cela. Chaque valeur entrée dans le champ de saisie sera codé en UTF-8. MAIS le navigateur coutume de dire au serveur! L'en-tête HTTP de la requête post contiendra un Content-Type:application/x-www-form-urlencoded champ, mais le jeu de caractères doit être omis (testé avec FF3.6 et IE8).

Le problème est le serveur d'applications que j'utilise (Tomcat6) s'attend à ce que le jeu de caractères dans l'entête Content-Type (comme indiqué dans RFC2388). Comme ceci: Content-Type:application/x-www-form-urlencoded;charset=utf-8. Si le jeu de caractères est omise, elle assumera ISO-8859-1 qui n'est pas le jeu de caractères utilisé pour l'encodage. Le résultat est cassé données.

Fait un peu une idée de la façon de forcer les navigateurs actuels pour ajouter le jeu de caractères à l'entête Content-Type?

source d'informationauteur Eduard Wirch