[英]UTF-8 encoding a servlet form submission with Tomcat
我正在尝试将包含unicode字符的简单表单发布到servlet操作。 在Jetty上,一切都没有障碍。 在Tomcat服务器上,utf-8字符会被破坏。
我得到的最简单的案例:
形成:
<form action="action" method="post">
<input type="text" name="data" value="It’s fine">`
</form>`
行动:
class MyAction extends ActionSupport {
public void setData(String data) {
// data is already mangled here in Tomcat
}
}
<Connector>
上有URIEncoding =“UTF-8” 我能使其工作的唯一两种方法是使用Jetty或将其切换为method =“get”。 这两个都导致角色没有问题。
我在server.xml中的
<Connector>
上有URIEncoding =“UTF-8”
这仅与GET请求相关。
动作的第一个过滤器调用
request.setCharacterEncoding("UTF-8");
好的,应该适用于POST请求。 你只需要确保,如果你已经不叫getParameter()
getReader()
getInputStream()
或任何其他可能会触发之前调用解析请求主体setCharacterEncoding()
包含表单的页面的内容类型是
"text/html; charset=UTF-8"
你究竟是如何设置它的? 如果在<meta>
,那么您需要了解当页面通过HTTP提供并且存在HTTP Content-Type
响应头时,浏览器会忽略它。 平均网络服务器默认已经设置了它。 然后,只有在将页面保存到本地磁盘并从那里查看时才会使用<meta>
内容类型。
要正确设置响应标头字符集,请将以下内容添加到JSP的顶部:
<%@page pageEncoding="UTF-8" %>
顺便说一句,这也会告诉服务器在给定的字符集中发送响应。
在表单中添加“accept-charset”没有任何区别
它只会在MSIE中产生差异,但即便如此,它也会错误地使用它。 无论如何,整个属性都是毫无价值的。 算了吧。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.