有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我的Tomcat web服务器使用Struts框架(v1)

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

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

问题是为什么默认编码是ISO-8859-1 它在哪里定义以及如何更改

环境详情:

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

共 (2) 个答案

  1. # 1 楼答案

    检查文件的编码是否为utf-8,html中的字符集元标记是否也设置为utf-8

  2. # 2 楼答案

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

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

    在服务器中。连接器元素的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的配置文档确实明确说明了if org。阿帕奇。卡塔琳娜。严格遵守是错误的,将使用UTF-8

    我确实有一些线索表明,这可以追溯到Servlet2.4规范,该规范规定,如果未指定字符编码,则使用ISO-8859-1