gpt4 book ai didi

java - Java (Tomcat) 中HttpRequest 的参数默认编码

转载 作者:行者123 更新时间:2023-11-28 22:11:31 25 4
gpt4 key购买 nike

我的 Tomcat 网络服务器使用的是 Struts 框架 (v1)。

读取请求参数时,我需要将参数从 ISO-8859-1 重新编码为 UTF-8 以获得正确的值。例如

String fName = request.getParameter("fName");
String displayName = new String(fName.getBytes("ISO-859-1"), "UTF-8");
persistName(displayName);

问题是为什么默认编码是 ISO-8859-1?在哪里定义,如何修改?

环境详情:

  • 服务器版本:Apache Tomcat/7.0.62
  • 操作系统名称:Linux
  • JVM 版本:1.8.0_92-b14

最佳答案

我想,如果我没记错的话,您可以将连接器上的 URIEncoding 属性设置为默认 UTF-8。

根据 this link ,Tomcat 8 下的默认值(当严格遵守 servlet 关闭时)是 UTF-8。在 Tomcat 7 下,在我的公司,我们明确设置了这一点。

在连接器元素的 server.xml 中:

<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" URIEncoding="UTF-8"/>

根据 Tomcat 7 HTTP connector 的配置文档,这是默认的 ISO-8859-1。

Tomcat 8 HTTP connector 的配置文档确实明确指出如果 org.apache.catalina. STRICT_SERVLET_COMPLIANCE 为假,将使用 UTF-8。

我确实知道这可以追溯到 Servlet 2.4 规范,该规范规定如果未指定字符编码,则使用 ISO-8859-1。

关于java - Java (Tomcat) 中HttpRequest 的参数默认编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38614119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com