说明
在文件上传时,附带请求参数,参数中包含中文 后端接收到时中文变为乱码 文件上传请求头未指定编码格式,导致服务端使用默认编码(不过现在服务端的默认编码都是utf-8,可能是版本bug又或是有其他配置文件覆盖了才导致这个问题)
随后在配置文件中配置编码格式为utf-8均无效。
如
server:
servlet:
encoding:
charset: UTF-8
force: true
force-response: true
#又或
spring:
http:
encoding:
charset: UTF-8
最终添加字符编码过滤器解决
package com.ruoyi.web;
/**
* @Description: 描述
* @Author: coderzzc
* @CreateDate: 2024/1/12 16:46
* @UpdateUser: coderzzc
* @UpdateDate: 2024/1/12 16:46
* @UpdateRemark: 特殊说明
* @Version: 1.0
*/
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.CharacterEncodingFilter;
@Configuration
public class WebConfig {
@Bean
public FilterRegistrationBean<CharacterEncodingFilter> characterEncodingFilterRegistration() {
FilterRegistrationBean<CharacterEncodingFilter> registration = new FilterRegistrationBean<>();
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setEncoding("UTF-8");
characterEncodingFilter.setForceEncoding(true);
registration.setFilter(characterEncodingFilter);
registration.addUrlPatterns("/*");
registration.setName("characterEncodingFilter");
registration.setOrder(Integer.MIN_VALUE); // 设置高优先级
return registration;
}
}