澄清与 JSP 页面和 Tomcat 一起使用时的 UTF-8 和 ISO-8859-1 编码
Clarification of UTF-8 and ISO-8859-1 encoding when used with JSP pages, and Tomcat
在编码方面,我一定在将两个和两个放在一起时遇到了问题,但是有很多关于编码的 Whosebug 问题,所以我一定不是唯一的问题!目前,我有一个简单的 JSP 页面,该页面有一个 struts 操作表单,其中包含一个默认值为 PÃ mies Olivés 的用户文本输入。
<%@page contentType="text/html;charset=UTF-8"%>
<form method="get" action="login.jsp">
<tr><td>Full Name:</td><td><input type="text" name="fullName" value="Pà mies Olivés" size="35"></td></tr>
<tr><td colspan="2"><br><input type="submit" name="submit" value="submit"></td></tr>
如果用户使用该默认值点击提交,我有一个 scriptlet 将用户输入的值输出到页面,以便我可以看到它。当 Tomcat 并且页面的字符集设置为 UTF-8 时,我得到了预期的 Pà mies OlivÉs。但是,如果我尝试在 Tomcat 中使用 ISO-8859-1 编码,我会得到 Pàmies Olivés 的输出,或者如果我将 Tomcat 和页面的字符集都设置为 ISO-8859- 1 值变为 Pàmies Olivés。是什么导致了这种与 ISO-8859-1 编码的差异?
POST 表单数据的编码通常由 form
元素上的 accept-charset
属性控制。
POST 表单定义应如下所示:
<form method="get" action="login.jsp" accept-charset="iso-8859-1" >
对于 GET 请求,HTML 4 建议对查询字符串使用 UTF-8 编码,您将使用的方法是 "GET"。
accept-charset="iso-8859-1"
可能会强制浏览器将查询字符串编码为 iso-8859-1,但我认为它不会很可靠。
相反,尽可能使用 POST。
我理解你的问题可能是学术性的,但我建议你对表单使用 UTF-8,这样你就不会将它们限制为 <255 个唯一字符。
在编码方面,我一定在将两个和两个放在一起时遇到了问题,但是有很多关于编码的 Whosebug 问题,所以我一定不是唯一的问题!目前,我有一个简单的 JSP 页面,该页面有一个 struts 操作表单,其中包含一个默认值为 PÃ mies Olivés 的用户文本输入。
<%@page contentType="text/html;charset=UTF-8"%>
<form method="get" action="login.jsp">
<tr><td>Full Name:</td><td><input type="text" name="fullName" value="Pà mies Olivés" size="35"></td></tr>
<tr><td colspan="2"><br><input type="submit" name="submit" value="submit"></td></tr>
如果用户使用该默认值点击提交,我有一个 scriptlet 将用户输入的值输出到页面,以便我可以看到它。当 Tomcat 并且页面的字符集设置为 UTF-8 时,我得到了预期的 Pà mies OlivÉs。但是,如果我尝试在 Tomcat 中使用 ISO-8859-1 编码,我会得到 Pàmies Olivés 的输出,或者如果我将 Tomcat 和页面的字符集都设置为 ISO-8859- 1 值变为 Pàmies Olivés。是什么导致了这种与 ISO-8859-1 编码的差异?
POST 表单数据的编码通常由 form
元素上的 accept-charset
属性控制。
POST 表单定义应如下所示:
<form method="get" action="login.jsp" accept-charset="iso-8859-1" >
对于 GET 请求,HTML 4 建议对查询字符串使用 UTF-8 编码,您将使用的方法是 "GET"。
accept-charset="iso-8859-1"
可能会强制浏览器将查询字符串编码为 iso-8859-1,但我认为它不会很可靠。
相反,尽可能使用 POST。
我理解你的问题可能是学术性的,但我建议你对表单使用 UTF-8,这样你就不会将它们限制为 <255 个唯一字符。