一、打开idea,找到Setting,点击File Encoding编解码设置,将以下标红的三个部分全部设置为UTF-8.同理如果你的项目使用的是GBK或者其他编码格式,那么也设置为统一。
二、点击Java Compiler设置补齐-encoding utf-8参数
三、如果你的项目使用到了tomcat,那么需要配置下tomcat的运行参数如下
四、如果使用postman测试传递过来的中文是乱码的话,大概率是postman传递过来的请求头Content-Type出现了问题,可以检查设置合理的Content-Type的值。
五、如果以上都不行的话,还有一种暴力方法,当请求或响应的字符编码不一致时,可能会导致乱码。CharacterEncodingFilter
通过确保整个请求/响应流程中字符编码的一致性,避免了乱码问题的发生。由于不同平台和浏览器默认的字符编码可能不同,CharacterEncodingFilter
也可以确保应用程序的字符编码设置不会因为客户端或服务器的差异而出现问题。
找到项目的web.xml文件打开,加上以下内容
<!-- <filter>-->
<!-- <filter-name>encodingFilter</filter-name>-->
<!-- <filter-class>com.ctid.ipm.api.beijing.filter.CharacterEncodingFilter</filter-class>--><!-- CharacterEncodingFilter是自己新建的类,可以强制加载指定的编解码过滤器-->
<!-- <init-param>-->
<!-- <param-name>encoding</param-name>-->
<!-- <param-value>UTF-8</param-value>-->
<!-- </init-param>-->
<!-- <init-param>-->
<!-- <param-name>forceEncoding</param-name>-->
<!-- <param-value>true</param-value>-->
<!-- </init-param>-->
<!-- </filter>-->
<!-- <filter-mapping>-->
<!-- <filter-name>encodingFilter</filter-name>-->
<!-- <url-pattern>/*</url-pattern>-->
<!-- </filter-mapping>-->
CharacterEncodingFilter类如下
//package com.ctid.ipm.api.beijing.filter;
//
//import javax.servlet.Filter;
//import javax.servlet.FilterChain;
//import javax.servlet.FilterConfig;
//import javax.servlet.ServletException;
//import javax.servlet.ServletRequest;
//import javax.servlet.ServletResponse;
//import java.io.IOException;
//
//public class CharacterEncodingFilter implements Filter {
//
// private String encoding = "UTF-8";
//
// @Override
// public void init(FilterConfig filterConfig) throws ServletException {
// String encodingParam = filterConfig.getInitParameter("encoding");
// if (encodingParam != null) {
// encoding = encodingParam;
// }
// }
//
// @Override
// public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
// throws IOException, ServletException {
// request.setCharacterEncoding(encoding);
// response.setCharacterEncoding(encoding);
// chain.doFilter(request, response);
// }
//
// @Override
// public void destroy() {
// // ������Դ
// }
//}