问题描述:
Tomcat默认情况下通过ISO-8859-1编码格式对所有请求的URL进行编码,因此,当某个URL中包含中文路径名称或文件名称时,
如请求:http://localhost:8080/pro/中文名称.html
Tomcat会无法正确解析和获取该URL地址,而引发HTTP 404错误。
解决办法:
在tomcat-->conf-->server.xml文件中 ,指定HTTP Connnector的URIEncoding="utf-8"
如:
<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"/>
URIEncoding属性具体指定了tomcat用来对URI进行解码的字符编码格式,如果省略该字段,默认情况下tomcat会使用ISO-8859-1编码格式来对URI进行解码。
补充:
除了用URIEncoding来指定URI的解码格式外,利用<Connector>标签的的useBodyEncodingForURI 属性同样也可以达到同样的效果,
该字段指定是否可以用请求中的contentType字段中的编码格式来对URI进行编码。这个设置主要是为兼容4.1.x版本的tomcat
因为该版本的tomcat是使用HTTP头中contentType字段指明的编码格式或通过Request.setCharacterEncoding 方法指明的编码格式来对URI进行编码