проблема spring boot @RequestParam с UTF-8

#java #spring #spring-boot #spring-mvc

Вопрос:

У меня есть приложение spring boot, так как я использую thymeleaf,

в контроллере у меня есть

 @GetMapping(value = "/edit" )
public String getEdit(HttpServletRequest request, HttpServletResponse response,Model model,
        @RequestParam("empName") String empName
        ){
    System.out.println(empName);
       }
 

и

 @PostMapping(value = "/edit")
public String postEdit(HttpServletRequest request, HttpServletResponse response,@Valid @ModelAttribute("emp") Employees emp,BindingResult bindingResult, Model model,@RequestParam("file") MultipartFile file,
        @RequestParam("empName") String empName
        ){

            return "redirect:/edit?empName=" empName;
        }
 

EmpName содержит содержимое utf-8, и если я нажму ссылку спереди, то System.out.println(EmpName); имеет
правильный результат, и если я перенаправлю сообщение, результат будет «????»

я пробовал везде в этом контроллере ставить utf-8, как пробовал

URLEncoder.кодирование(url, стандартные наборы символов.UTF_8)

URLEncoder.кодировать(url, «UTF_8»)

но нет правильного результата,

кто-нибудь может помочь?

Ответ №1:

Добавить кодировку:

 @GetMapping(value = "/edit", produces = "application/json; charset=UTF-8")
 

Комментарии:

1. к сожалению, не помогло, тогда я также добавил в @PostMapping, но это не работает

Ответ №2:

Вам просто нужно добавить эти свойства в файл application.properties: Для весенней загрузки 1.x

 # Charset of HTTP requests and responses. Added to the "Content-Type" 
# header if not set explicitly.
spring.http.encoding.charset=UTF-8
# Enable http encoding support.
spring.http.encoding.enabled=true
# Force the encoding to the configured charset on HTTP requests and responses.
spring.http.encoding.force=true
 

Источник: https://docs.spring.io/spring-boot/docs/1.5.22.RELEASE/reference/html/common-application-properties.html

Для Пружинного ботинка 2.x

 server.servlet.encoding.charset=UTF-8
server.servlet.encoding.force-response=true
 

Источник: https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html#server.servlet.encoding.charset

Комментарии:

1. к сожалению, не помогло, тогда я добавил server.servlet.encoding.charset=UTF-8 server.servlet.encoding.enabled=истинный сервер.сервлет.кодирование.сила=истинный сервер.сервлет.кодирование.принудительный ответ=правда, это также не помогло