【发布时间】:2011-01-26 00:17:02
【问题描述】:
一个简单的 HTML 文件:
<!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>
服务器使用标头Content-Type:text/html; charset=utf-8 提供HTML 文件。一切都说:“亲爱的浏览器,当您发布此表单时,请将其发布为 utf-8 编码”。浏览器实际上是这样做的。在输入字段中输入的每个值都将采用 UTF-8 编码。 但是浏览器不会告诉服务器! post 请求的 HTTP 标头将包含 Content-Type:application/x-www-form-urlencoded 字段,但字符集将被省略(已使用 FF3.6 和 IE8 测试)。
问题是我使用的应用程序服务器 (Tomcat6) 需要 Content-Type 标头中的字符集(如 RFC2388 中所述)。像这样:Content-Type:application/x-www-form-urlencoded;charset=utf-8。如果省略字符集,它将假定 ISO-8859-1 不是用于编码的字符集。结果是损坏的数据。
有人知道如何强制当前浏览器将字符集附加到 Content-Type 标头吗?
【问题讨论】:
-
我遇到了完全相同的问题,我已经在 google 群组上向 FF 询问了解决此问题的方法groups.google.com/group/mozilla.dev.platform/browse_thread/…
标签: tomcat forms post content-type character-encoding