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
# 1 楼答案
检查文件的编码是否为utf-8,html中的字符集元标记是否也设置为utf-8
# 2 楼答案
我想,如果我没记错的话,可以将连接器上的URIEncoding属性设置为默认的UTF-8
根据this link,Tomcat8下的默认值(当严格的servlet遵从性关闭时)是UTF-8。在Tomcat 7下,我们公司明确规定了这一点
在服务器中。连接器元素的xml:
根据Tomcat 7 HTTP connector的配置文档,默认情况下这是ISO-8859-1
Tomcat 8 HTTP connector的配置文档确实明确说明了if org。阿帕奇。卡塔琳娜。严格遵守是错误的,将使用UTF-8
我确实有一些线索表明,这可以追溯到Servlet2.4规范,该规范规定,如果未指定字符编码,则使用ISO-8859-1