Springmvc中@RequestParam传值中文乱码解决方案

首先jsp表单里面有一些参数要传到controller中,通过以下方法接收: 

Java代码  收藏代码
  1. @RequestMapping(value="/orderPaper")  
  2.     public ModelAndView orderPaper(   
  3.             @RequestParam("paperName")String paperName,  
  4.             @RequestParam("openStartTime")String openStartTime,   
  5.             @RequestParam("openEndTime")String openEndTime ) {  
  6.         ModelAndView mv = new ModelAndView();  
  7. mv.addObject("paperName", paperName);    //这里面传过来的是中文,接收到的是一堆笑得很开心的的乱码  
  8.         mv.setViewName("/college/orderPaper");  
  9.         return mv;  
  10.     }  


怎么处理呢?通过下面的工具类: 

Java代码  收藏代码
  1. public class EncodingTool {  
  2.     public static String encodeStr(String str) {  
  3.         try {  
  4.             return new String(str.getBytes("ISO-8859-1"), "UTF-8");  
  5.         } catch (UnsupportedEncodingException e) {  
  6.             e.printStackTrace();  
  7.             return null;  
  8.         }  
  9.     }  
  10. }  


这样,只要把controller中改为

Java代码  收藏代码
  1. mv.addObject("paperName",EncodingTool.encodeStr(paperName));   



在网上有的说还需要在web.xml里面配置: 

Java代码  收藏代码
  1. <!-- 字符过滤器 -->  
  2.   <filter>  
  3.     <filter-name>encodingFilter</filter-name>  
  4.     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
  5.     <init-param>  
  6.         <param-name>encoding</param-name>  
  7.         <param-value>UTF-8</param-value>  
  8.     </init-param>  
  9.   </filter>  
  10.   <filter-mapping>  
  11.     <filter-name>encodingFilter</filter-name>  
  12.     <url-pattern>/*</url-pattern>  
  13.   </filter-mapping>  


我试过,其实不配置也能把爱笑的乱码解决! 

原文地址:https://www.cnblogs.com/qihuan/p/4829006.html