解决springMVC中URL中文乱码问题
问题:
在java控制器里面如果转发或重定向的URL中有中文,那么请求该URL时就会造成乱码,导致访问出错。
事例
@RequestMapping("/updateBook")
public String updateBook(Books books, String type, HttpServletResponse response, HttpServletRequest request) throws Exception {
request.setCharacterEncoding("UTF-8");
bookService.updateBook(books);
System.out.println(books.getBookName());
if (type.equals("ab"))
return "redirect:all";
else
response.sendRedirect("/book/byName?bName=" + URLEncoder.encode(books.getBookName(),"UTF-8"));
return null;
}
@RequestMapping("/byName")
public String del(@RequestParam("bName") String name, Model model,HttpServletRequest request)throws Exception{
List<Books> books = bookService.queryByName(name);
model.addAttribute("list",books);
model.addAttribute("name",name);
System.out.println(books);
return "queryByName";
}
- 这段代码是方法update通过response重定向到下面的路径(/byName,因为该类上还有一个/book的映射,此处省略),因为路径上带有参数,而且是中文,所有就会导致乱码。
解决办法
- 要解决这个问题很简单,只需要将该URL编码成UTF=8格式即可
- 方法:URLEncoder.encode(中文,“UTF-8”)
- 最后将其拼接到URL即可,也可以直接将整个URL编码,此法读者可自行尝试