Tomcat 8默认字符编码格式UTF-8

SpringMVC源码总结(五)Tomcat的URIEncoding、useBodyEncodingForURI和CharacterEncodingFilter

tomcat8以后的版本对于字符的默认编码格式是UTF-8;

7之前的都是iso-8859-1。如果默认情况下,tomcat使用的的编码方式:iso-8859-1

修改tomcat下的conf/server.xml文件

这段代码规定了Tomcat监听HTTP请求的端口号等信息。

可以在这里添加一个属性:URIEncoding,将该属性值设置为UTF-8,即可让Tomcat(默认ISO-8859-1编码)以UTF-8的编码处理请求参数。

修改完成后:

useBodyEncodingForURI="true"是指请求参数的编码方式采用请求体的编码方式。

当useBodyEncodingForURI="true"时,若请求体采用UTF-8解析,则请求参数也要采用UTF-8来解析


URIEncoding就是针对请求参数的编码设置的,即URL后面的?跟随的参数

而filter的request.setCharacterEncoding('UTF-8'),或者请求header中的content-type中的编码都是针对POST请求体的


正常使用SPRING MVC的项目会在WEB.XML中配置CharacterEncodingFilter来进行编码过滤,这里对CharacterEncodingFilter源码分析得知

这个filter有两个属性,encoding和forceEncoding,我们可以在web.xml文件中来设定这两个属性值。每次request请求到来执行方法doFilterInternal,总是调用request.setCharacterEncoding(this.encoding)将该filter的我们配置的encoding值设置为请求体的编码方式,记住该编码方式只对请求体,不针对请求参数。当forceEncoding=true时,不管请求header content-type有没有编码方式,始终将该filter的encoding值设置到request和response中,同样只针对request的请求体。

因此若要改变请求参数的编码,就是如上面所写的到 tomcat里面的server.xml文件中配置URIEncoding。useBodyEncodingForURI="true"的时候,请求参数的编码方式采用请求体的编码方式,当指定了Content-Type的编码方式时,则优先使用Content-Type的编码方式,否则使用TOMCAT默认的编码方式。

至于页面编码格式和浏览器对于URL的编码格式,浏览器由浏览器自己决定,大多数为UTF-8,这些都不影响请求头中Content-Type指定的编码格式。

你可能感兴趣的:(Tomcat 8默认字符编码格式UTF-8)