问题:
@PostMapping(value = "/test")
public Result<Test> test(@RequestPart("file") MultipartFile multipartFile,
@RequestPart("test") String test,
HttpServletRequest request)
当test 参数给中文时,获取到的值是乱码的
原因:
@RequestPart注解由RequestPartMethodArgumentResolver进行解析
当参数是string时,会由readWithMessageConverters方法解析参数,并从body中获取值
由于参数是string类型的,就会使用StringHttpMessageConverter进行解析,也就其readInternal方法
问题就出在getContentTypeCharset方法中
由于contentType为空,此时会走getDefaultCharset,而其默认的charset为ISO_8859_1
问题就出在这里,我们需要修改为UTF-8
解决:实现WebMvcConfigurer接口,并实现extendMessageConverters方法,修改
StringHttpMessageConverter的defaultCharset为UTF-8 即可
这样处理后,后面只要是用了StringHttpMessageConverter解析的中文就不会有乱码