Một tập tin HTML đơn giản:Làm thế nào để buộc trình duyệt để thiết lập charset trong content-type tiêu đề http
<!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>
Các tập tin HTML được phục vụ bởi các máy chủ sử dụng tiêu đề Content-Type:text/html; charset=utf-8
. Tất cả mọi thứ nói: "trình duyệt thân yêu khi bạn gửi mẫu này, xin vui lòng gửi nó utf-8 mã hóa". Trình duyệt thực sự thực hiện điều này. Mọi giá trị được nhập trong trường nhập sẽ được mã hoá UTF-8. NHƯNG trình duyệt sẽ không nói điều này với máy chủ! Tiêu đề HTTP của yêu cầu bài đăng sẽ chứa trường Content-Type:application/x-www-form-urlencoded
nhưng bộ ký tự sẽ bị bỏ qua (được thử nghiệm với FF3.6 và IE8).
Vấn đề là máy chủ ứng dụng tôi sử dụng (Tomcat6) dự kiến bộ ký tự trong tiêu đề Kiểu nội dung (như đã nêu trong RFC2388). Như thế này: Content-Type:application/x-www-form-urlencoded;charset=utf-8
. Nếu bộ ký tự bị bỏ qua, nó sẽ giả định ISO-8859-1 không phải bộ ký tự được sử dụng để mã hóa. Kết quả là dữ liệu bị hỏng.
Có một số người có manh mối về cách buộc trình duyệt hiện tại gắn thêm bộ ký tự vào tiêu đề Loại nội dung không?
Tôi rơi chính xác cùng một vấn đề và tôi đã yêu cầu FF trên các nhóm google để tìm cách giải quyết vấn đề này http://groups.google.com/group/mozilla.dev.platform/browse_thread/thread/f3fd16b217a956c6 # –