java - 使用 UTF-8 编码的 Tomcat 7

标签 java tomcat servlets utf-8 josso

案例 1:我有一台装有 Ubuntu 和 Tomcat 7.x 的虚拟机。如果我将带有特殊字符的数据发布到服务器,我没问题。我有一个在任何 servlet 之前运行的过滤器,并将编码设置为 UTF-8 request.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()。
  • 我已经在 tomcat setenv.sh 上设置了 JAVA_OPTS="$JAVA_OPTS -Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8"
  • 我检查了 HTTP header ,它们是正确的 (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 header : image with the headers

有什么想法吗? 谢谢。

最佳答案

我在 server.xml 文件的 Connector 元素中添加了 URIEncoding 属性,这是 tomcat 的配置文件。

我的代码如下。

<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8082" protocol="HTTP/1.1" redirectPort="8443"/>    
<Connector URIEncoding="UTF-8" port="8009" protocol="AJP/1.3" redirectPort="8443"/>

关于java - 使用 UTF-8 编码的 Tomcat 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42102058/

相关文章:

java - 在JAVA接口(interface)前放一个大写的 'I'

java - IntelliJ : How to enable JPAQL validation without persistence. XML?

java - 我应该从哪里获得 tomcat7-maven-plugin 的 context.xml

使用自动页面刷新时的 Java servlet "HTTP Status 500"

java - 如何部署 JAX-RS 应用程序?

java - 使用servlet和html在服务器上上传文件时找不到符号getServletContext()错误

java - 无法在SQL中使用prepareStatement

java - 在javascript中用RSA加密一个小字符串,然后在服务器上用java解密

apache2 - 子域代理传递所有指向单个服务器

java - 迁移到 Grails 5.1.1 后速度缓慢 - GrailsControllerUrlMappingInfo 上花费的时间