文件上传时中文参数编码问题

189 阅读1分钟

说明

在文件上传时,附带请求参数,参数中包含中文 后端接收到时中文变为乱码 文件上传请求头未指定编码格式,导致服务端使用默认编码(不过现在服务端的默认编码都是utf-8,可能是版本bug又或是有其他配置文件覆盖了才导致这个问题)

image.png 随后在配置文件中配置编码格式为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;
    }
}