解决SpringBoot响应中文乱码

这篇具有很好参考价值的文章主要介绍了解决SpringBoot响应中文乱码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第一种方式

创建Servlet类

解决乱码也可以直接resp.setContentType("text/html;charset=utf-8"),为了演示使用字符集过滤器类这里先不设置编码格式,输出流记得刷新和关闭。

package com.thugstyle.web;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();
        out.println("<p style='color:orange'>欢迎访问我的servlet</p>");
        out.flush();
        out.close();
    }
}

springboot返回中文乱码,servlet,springboot

注册Servlet

@Configuration声明配置类,@Bean可以将方法返回值添加到Spring容器中,可由容器调用

package com.thugstyle.config;

import com.thugstyle.web.MyServlet;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.CharacterEncodingFilter;

@Configuration
public class ConfigApplication {
    @Bean /*在配置类中注册servlet*/
    public ServletRegistrationBean servletRegistrationBean(){
        ServletRegistrationBean bean = new ServletRegistrationBean();
        bean.setServlet(new MyServlet());
        bean.addUrlMappings("/myServlet");
        return bean;
    }
}

springboot返回中文乱码,servlet,springboot

 启动容器对象

SpringApplication.run返回值为容器对象,可用来测试

package com.thugstyle;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

springboot返回中文乱码,servlet,springboot

响应内容出现中文乱码,因此这里需要将字符集过滤器类注册到容器中

springboot返回中文乱码,servlet,springboot

注册字符集过滤器类

使用框架中的字符集过滤器类,并声明编码格式为utf-8,指定request和response都使用encoding的值

 @Bean
    public FilterRegistrationBean filterRegistrationBean(){
        FilterRegistrationBean filterBean = new FilterRegistrationBean();
        CharacterEncodingFilter filter = new CharacterEncodingFilter();
        /*将文本过滤器类注册到容器中*/
        filter.setEncoding("utf-8");
        filter.setForceEncoding(true);
        filterBean.setFilter(filter);
        filterBean.addUrlPatterns("/*");
        return filterBean;
    }

springboot返回中文乱码,servlet,springboot

 关闭系统默认过滤器

SpringBoot中默认配置的CharacterEncodingFilter为IS0-8859-1,设置enabled=fales目的是关闭系统默认的字符集过滤器,使用上一步自定义的CharacterEncodingFilter编码格式(utf-8)

server.servlet.encoding.enabled=false

springboot返回中文乱码,servlet,springboot

再次访问Servlet发现未出现中文乱码

springboot返回中文乱码,servlet,springboot

第二种方式

可以在application.properties配置文件中配置自定义编码格式,其中编码使能开关默认是true可省略,

并设置请求与响应都使用自定义编码格式,这种方式不需要注册CharacterEncodingFilter过滤器,推荐使用。

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

springboot返回中文乱码,servlet,springboot

 文章来源地址https://www.toymoban.com/news/detail-619822.html

到了这里,关于解决SpringBoot响应中文乱码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot返回响应排除为 null 的字段

    可以通过全局配置,使返回响应中为 null 的字段,不在出现在返回结果中。 注意:这样配置,使得返回响应包含的字段随请求结果变化,响应到底包含哪些字段不直观;除非业务明确有这种需求,否则不建议配置。 PS:Gson将Bean转为JSON时,默认会排除null字段。 添加配置前:

    2024年02月11日
    浏览(42)
  • 接口返回响应,统一封装(ResponseBodyAdvice + Result)(SpringBoot)

    接口的返回响应,封装成统一的数据格式,再返回给前端。 对于SpringBoot项目,接口层基于 SpringWeb ,也就是 SpringMVC 。 为了使接口的返回结果数据更加规范化,便于接口测试和前端处理,需要以统一的格式来返回数据; 为了不在每一个接口里面,都写一段返回数据封装的代

    2024年02月08日
    浏览(59)
  • 【支付系统】java springboot 生成二维码,二维码中文乱码

            支付系统必不可少的就是生成二维码,有时我们会需要将支付链接转换为二维码.用户通过移动设备扫描二维码调起支付. 该篇文章主要使用的是hutool自带的二维码生成功能.  1. 引入依赖(hutool 可以按需引入这里就直接使用all了) 2. hutool的官方已经有很详细的生成方式

    2024年02月11日
    浏览(43)
  • python flask 返回中文乱码

    使用flask返回数据中带有中文的时候会显示成乱码(ascii), 中文报文: 乱码报文: \\\"ABAPu4e2du7684u4e09u5927u8d22u52a1u62a5u8868u662fuff1ann* **u8d44u4ea7u8d1fu503au8868**n* **u6536u5165u8bc1u660e**n* **u73b0u91d1u6d41u91cfu8868**nnu8fd9u4e9bu62a5u8868u5168u9762u6982u8ff0u4e86u516cu53f8u7684

    2024年02月17日
    浏览(39)
  • 小程序接收PHP返回中文乱码

    小程序接收PHP返回中文乱码可能是由于编码不一致或字符集设置不正确导致的。以下是一些可能的解决方案: 确保PHP和微信小程序之间的编码一致:在PHP代码中,使用header(\\\'Content-Type: text/html; charset=utf-8\\\');来设置正确的字符集为UTF-8。同时,在微信小程序的后端请求中,确保请

    2024年02月03日
    浏览(35)
  • springgateway网关修改响应后,部分中文乱码问题

    是因为响应体过大,开启了压缩,数据分段进行响应得,导致处理返回体得时候乱码

    2024年02月11日
    浏览(35)
  • python django StreamingHttpResponse流式响应中文是乱码

    在 Django 中,StreamingHttpResponse 用于实现流式响应,即在响应过程中逐步发送数据。如果在使用 StreamingHttpResponse 时,返回的中文内容出现乱码,可能是因为编码设置不正确。 要解决这个问题,请确保在设置 StreamingHttpResponse 时,正确设置了字符编码。以下是一个示例: 在这个

    2024年03月10日
    浏览(41)
  • SpringBoot及其他框架乱码问题的原因和解决

    乱码问题是指当我们在浏览器或者其他客户端发送或接收数据时,由于编码格式不一致或者不正确,导致数据显示为一些无法识别的字符,如 ???? 或者 鍙戠敓涓枃涔辩爜闂 。这种问题会影响用户体验和数据传输的准确性。 乱码问题的根本原因是编码格式不匹配。编码

    2024年02月10日
    浏览(48)
  • springboot三层架构解决报错信息:o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet

    报错信息: postman测试返回的报错信息: controller层代码: 解决办法是将注释@Controller改成@RestController,就可以成功运行,原因我也不知道,刚学这个没多久,记录下来,如果有人能告诉我·原因的话,我会非常感激的。

    2024年02月07日
    浏览(55)
  • Spring/SpringBoot 过滤器修改、获取http 请求request中的参数 和 response返回值,比如修改请求体和响应体的字符编码

    通过自定义filter,RequestWrapper,ResponseWrapper 处理请求和响应数据,比如修改请求体和响应体的字符编码 1.request 和 response 中的数据都是 存在流中的(缓存中)获取一次就没有了,需要重新写回去。所以需要两个包装类分别继承HttpServletRequestWrapper 和 HttpServletResponseWrapper 对 r

    2024年02月15日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包