So erzwingen Sie, dass der Browser den Zeichensatz im HTTP-Header des Inhaltstyps festlegt

Eine einfache HTML-Datei:

<!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>

Die HTML-Datei wird vom Server mithilfe des Headers bereitgestelltContent-Type:text/html; charset=utf-8. Alles sagt: "Lieber Browser, wenn du dieses Formular postest, poste es bitte utf-8 verschlüsselt". Der Browser macht das tatsächlich. Jeder in das Eingabefeld eingegebene Wert wird UTF-8-codiert.ABER Der Browser teilt dies dem Server nicht mit! Der HTTP-Header der Post-Anfrage enthält aContent-Type:application/x-www-form-urlencoded Feld, aber der Zeichensatz wird weggelassen (getestet mit FF3.6 und IE8).

Das Problem ist, dass der von mir verwendete Anwendungsserver (Tomcat6) den Zeichensatz im Content-Type-Header erwartet (wie in RFC2388 angegeben). So was:Content-Type:application/x-www-form-urlencoded;charset=utf-8. Wenn der Zeichensatz weggelassen wird, wird ISO-8859-1 vorausgesetzt, das nicht der Zeichensatz ist, der für die Codierung verwendet wird. Das Ergebnis sind fehlerhafte Daten.

Hat jemand eine Ahnung, wie er die aktuellen Browser zwingen kann, den Zeichensatz an den Content-Type-Header anzuhängen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage