最近作項目,springmvc的url中文參數亂碼:html
請求url:web
http://localhost:8080/supply/supply_list.htm?productName=測試&isHomePage=spring
在後端:後端
@RequestMapping(value = SupplyURL.SUPPLY_LIST, method = RequestMethod.GET) public String toSupplyList (Model model, String productName) { PageBean<Supply> pagination = supplyFacade.querySupplyByPage(searchSupplyVO); model.addAttribute("searchSupplyVO", searchSupplyVO);return "/supply/supply_list"; }
這裏productName的值就變成了亂碼,tomcat
檢查個人web的web.xml中已經增長了過濾中文編碼的:mvc
<!-- Character Encoding filter --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
可是仍是亂碼。app
仔細檢查了,仍是中間容器tomcat致使的。修改tomcat的conf/server.xml中的webapp
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" useBodyEncodingForURI="true" URIEncoding="UTF-8" />測試
加上useBodyEncodingForURI="true" URIEncoding="UTF-8" 。便可。編碼
好比我要下載
http://localhost:8080/template/檔案模板.xls
會轉義成以下的,此時若是加上 URIEncoding="UTF-8" ,則能夠在webapp/template/目錄下找到文件。不會再報404了。
http://localhost:8080/template/%E5%AD%A6%E7%94%9F%E6%A1%A3%E6%A1%88%E5%AF%BC%E5%85%A5%E6%A8%A1%E6%9D%BF.xls
詳細參考本人另外一篇博文:
http://www.cnblogs.com/gmq-sh/p/7492126.html