【发布时间】:2015-05-17 14:13:39
【问题描述】:
从jsp,在文本框中,我输入“göteborg”。 但是在我的 servlet 中,当我执行“request.getParameter”时,我得到了“göteborg”。
这种行为正确吗?
我在jsp页面中有以下设置。
<%@ page contentType="text/html; charset=UTF-8" language="java"%>
<meta charset="UTF-8"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
在调用 request.getParameter 之前,我还在 servlet 中设置了以下行:
request.setCharacterEncoding("UTF-8");
缺少什么?
【问题讨论】:
-
您能否检查原始请求的请求/响应标头以及相关请求的标头。
-
重要的是浏览器在收到表单时看到的字符集。
-
解释是从浏览器到你的服务器的表单post请求是独立的。 HTTP 默认编码是 ISO-8859-1,因此缺少
request.setEncoding("UTF-8");幸运的是,有解决方案可以在一个地方对传入的请求进行这种编码。 -
谢谢大家,我通过在 server.xml 中添加 URIEncoding="UTF-8" 到 8080 连接器解决了这个问题。
-
你可能想自己回答这个问题 - 提供关闭,以防其他人遇到同样的问题。