SpringMVC Controller 接收页面传递的中文参数出现乱码

请求地址:Request URL:

http://localhost:8080/Expofarea/allList?name=数据分析
接收方法:

@ResponseBody
@RequestMapping("/Expofarea/allList")
public List getAllByJobTag(String name) {
     List all = expofareaService.getAllByJobTag(name);
     return all;
}

接收到的name是乱码:name=????

问题产生分析:

Spring MVC中默认的编码格式为“ISO-8859-1”,因此造成乱码。

简单的解决方式:

New String(request.getParameter("xxx").getBytes("iso-8859-1"),"utf-8")

最好的解决方式:

在web.xml中配置Spring字符过滤器,添加:



    SpringEncodingFilter
    org.springframework.web.filter.CharacterEncodingFilter
    
        encoding
        UTF-8
    
    
        forceEncoding
        true
    


    SpringEncodingFilter
    /*
GET方法接收到中文乱码在tomcat的server.xml添加URIEncoding="utf-8"

 
变更为:

PS:分析了一遍,发现项目的编码都是utf-8,是没问题,说明问题出在了tomcat本身。

  1. 打开server.xml,第69行(一般来说都是这里),发现是没有指定编码的。

  2. 解决:在加上URIEncoding="UTF-8。
  3. 重启项目,重新请求方法,好了,期待已久的中文出现啦。此刻才发现,中文是多么的亲切。

你可能感兴趣的:(JAVA)