关于SpringBoot中的字符编码问题

x33g5p2x  于2021-11-27 转载在 Spring  
字(1.5k)|赞(0)|评价(0)|浏览(570)

当打印中文的时候就会出现乱码

方式一

解决请求过程中的乱码

首先使用字符编码过滤器可以解决数据在请求过程中的乱码问题

  1. @Configuration
  2. public class EncodingFilterConfig {
  3. @Bean
  4. public FilterRegistrationBean myFilterRegistrationBean(){
  5. //创建字符编码过滤器
  6. CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
  7. //设置强制使用指定字符编码
  8. characterEncodingFilter.setForceEncoding(true);
  9. //设置指定编码字符
  10. //过滤器只能解决请求过程中的乱码问题
  11. characterEncodingFilter.setEncoding("utf-8");
  12. FilterRegistrationBean frb = new FilterRegistrationBean(characterEncodingFilter);
  13. frb.addUrlPatterns("/*");
  14. return frb;
  15. }
  16. }

解决响应过程中的乱码

  1. @WebServlet(urlPatterns = "/hello")
  2. public class MyServlet extends HttpServlet {
  3. @Override
  4. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  5. //设置响应的编码格式
  6. response.setContentType("text/html;character=utf-8");
  7. response.getWriter().print("你好世界!!!");
  8. response.getWriter().flush();
  9. response.getWriter().close();
  10. }
  11. }

修改springboot核心配置文件

在application.yml文件中添加以下内容

  1. #关闭springboot的http字符编码支持
  2. #只有关闭了这个后字符编码过滤器才能生效
  3. server:
  4. servlet:
  5. encoding:
  6. enabled: false

测试

方式二(推荐使用)

解决请求过程中的乱码

在springboot核心配置文件中添加以下内容就不需要写过滤器了

  1. #设置请求字符编码
  2. server:
  3. servlet:
  4. encoding:
  5. enabled: true
  6. force: true
  7. charset: utf-8

解决响应过程中的乱码

  1. @WebServlet(urlPatterns = "/hello")
  2. public class MyServlet extends HttpServlet {
  3. @Override
  4. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  5. //设置响应的编码格式
  6. response.setContentType("text/html;character=utf-8");
  7. response.getWriter().print("你好世界");
  8. response.getWriter().flush();
  9. response.getWriter().close();
  10. }
  11. }

测试

相关文章