案例 1:我有一个带有 Ubuntu 和 Tomcat 7.x 的虚拟机。如果我将带有特殊字符的数据发布到服务器就可以了。我有一个在任何 servlet 之前运行的过滤器并将编码设置为 UTF-8request.setCharacterEncoding("utf-8");
案例 2:在同一个虚拟机中,我安装了其他 Tomcat 7.x(回复)。现在我在 Tomcat 7.x 上安装了 JOSSO 1.8.6。在此之后,当我尝试提交带有特殊字符的 POST 数据时,servlet 无法正确解码request.getParameter("reportText");
。
我相信 JOSSO 有任何在我的编码过滤器之前运行的过滤器并使用使我的过滤器request.setCharacterEncoding("utf-8")
无用的请求。
我试图解决的问题:
- 我在 Tomcat 连接器标记 (server.xml) 处设置了 URIEncoding="utf-8"。
- 我使用了 setCharacterEncoding()。
- 我已经设置了
JAVA_OPTS="$JAVA_OPTS -Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8"
tomcat setenv.sh - 我检查了 HTTP 标头,它们是正确的(Content-Type=text/plain;charset=utf-8)
- 我已启用 Tomcat 过滤器
setCharacterEncodingFilter
POST 请求由客户端 JSP 生成
<form id="xx" name="xx" onsubmit="return validateAndSubmitForm(this);" action="submitReport.do" method="post" enctype="application/x-www-form-urlencoded; charset: utf-8;"> xxx </form>
我的 JSP 标签在顶部:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
POST 标头: 带有标头的图像
有任何想法吗?谢谢你。