在spring拦截器中设置编码无效,我想是spring在调用拦截器前已经设置了编码。如何改spring mvc的设置的默认编码,有相关配置吗? 如果没有只能加个filter了
------------------------------------------------------------------------------------------------------------------
问题补充:
<p>在spring拦截器中设置编码无效,我想是spring在调用拦截器前已经设置了编码。如何改spring mvc的设置的默认编码,有相关配置吗? 如果没有只能加个filter了</p>
------------------------------------------------------------------------------------------------------------------
问题补充:
谢谢大家,不是浏览器的问题,我想是spring的问题。当content-type是"application/x-www-form- urlencoded; charset=utf-8"时,spring会自动设置request.setCharacterEncoding("UTF-8"),我用ajax方式提交的数据都是这样的content-type,没有乱码。但是form标签不能指定charset,spring默认设置的是Latin-1,所以会有乱码。虽然我在拦截器中已经setCharacterEncoding("UTF-8"),但是spring已经在这之前把浏览器发过的utf-8编码转成了Latin-1。
乱码的过程:
UTF-8 -> Latin-1 -> UTF-8
乱码的样子:
å表æ°è´´å表æ°è´´å表æ°è´´å表æ°è´´
这种乱码是无法回归正常的,一些数据在转换时已经丢失。
------------------------------------------------------------------------------------------------------------------
问题补充:
已经解决,如果用@RequestParam注解的话,在拦截器中设置请求编码已经晚了,要在spring初始化之前设置,用spring自带的org.springframework.web.filter.CharacterEncodingFilter即可