Springboot项目请求乱码问题

问题描述

请求乱码,但是看F12当中的请求又并没有乱码,这就很莫名其妙了。

在这里插入图片描述

解决过程

刚开始一直以为是浏览器问题,因为使用postman也是返回的中文。并没有乱码问题,于是搜了很多关于谷歌浏览器乱码问题的。

谷歌浏览器本身设置当中好像是没有设置编码的地方,于是下载了一个插件,专门用于修改浏览器的编码。但是没有什么卵用。

后来又专门拿别的浏览器来进行访问,发现也是乱码,这样一来就排除了浏览器问题。

最终添加如下配置修改响应编码,成功解决!:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.nio.charset.Charset;
import java.util.List;

@Configuration
@EnableWebMvc
public class ResposeConfig implements WebMvcConfigurer {

    @Bean
    public HttpMessageConverter<String> responseBody() {
        return new StringHttpMessageConverter(Charset.forName("UTF-8"));
    }

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(responseBody());
    }
}
### 解决Spring Boot POST 请求中的中文乱码问题 在处理 Spring Boot 应用程序时,如果遇到 POST 请求发送的数据存在中文乱码的情况,通常是因为字符编码设置不正确所致。为了确保应用程序能够正确解析带有中文字符的内容,在配置文件 `application.properties` 或者 `application.yml` 中指定正确的字符集是非常重要的[^1]。 对于基于 `.properties` 文件的应用来说: ```properties server.servlet.encoding.charset=UTF-8 server.servlet.encoding.enabled=true server.servlet.encoding.force-response=true ``` 而对于采用 YAML 配置方式的应用,则应如下所示进行设定: ```yaml server: servlet: encoding: charset: UTF-8 enabled: true force-response: true ``` 除了上述方法外,还可以通过编程的方式实现同样的效果。这可以通过创建并注册自定义的 `CharacterEncodingFilter` 来完成,该过滤器会在每次 HTTP 请求到达之前强制执行特定的字符编码方案[^2]。 ```java 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> characterEncodingFilter() { CharacterEncodingFilter filter = new CharacterEncodingFilter(); filter.setEncoding("UTF-8"); filter.setForceEncoding(true); FilterRegistrationBean<CharacterEncodingFilter> registrationBean = new FilterRegistrationBean<>(filter); registrationBean.addUrlPatterns("/*"); return registrationBean; } } ``` 另外需要注意的是,当客户端向服务器提交表单数据时,应该确保其也指定了正确的 Content-Type 头部信息以及对应的字符集,例如 `Content-Type: application/x-www-form-urlencoded; charset=UTF-8` 或者 `Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW;charset=UTF-8` 等形式之一[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怪 咖@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值