jsp - 澄清与 JSP 页面和 Tomcat 一起使用时的 UTF-8 和 ISO-8859-1 编码

标签 jsp tomcat encoding utf-8 iso-8859-1

当涉及到编码时,我一定在将两个和两个放在一起时遇到了问题,但是有很多关于编码的 stackoverflow 问题,所以我一定不是唯一的问题!目前,我有一个简单的 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é秒。是什么导致了这种与 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 个唯一字符。

关于jsp - 澄清与 JSP 页面和 Tomcat 一起使用时的 UTF-8 和 ISO-8859-1 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34069884/

相关文章:

apache - 如何检测 503 Service Temporarily Unavailable 错误的原因并进行处理?

java - 如何使用 heroku 的 webapp-runner.jar 运行 cbioportal tomcat war

c - 将十进制值编码为固定位数

java - 将字符转换为 UTF-8

java - TOMCAT如何在系统中定位JRE?

java - Jasper异常无法解决

jsp - tomcat 7 - org.apache.jasper.JasperException 包含无效表达式 : javax. el.ELException:无法解析表达式

xml - 使用 "FOR XML PATH"时如何避免字符编码?

javascript - 从 JSP 用 Ja​​vascript 发布表单

java - 如何在 jsp 文件中编写的 servlet 代码中应用 css 文件?