当前位置: 首页 > news >正文

SpringMVC 前后端数据交互 中文乱码

 ajax 前台传入数据,但是后台接收到的数据中文乱码

 首先我们分析一下原因:我们调用接口的时候传入的中文,是没有乱码的

 此时我们看一下Java后台接口对应的编码:

  • 默认情况:Servlet容器(如Tomcat)默认使用ISO-8859-1解码请求参数

  • 中文问题:中文字符在ISO-8859-1编码下会变成乱码

 我们的程序是跑在tomcat 上面的,自然使用的是默认的编码:ISO-8859-1,我是使用tomcat插件启动的项目,并没有设置编码,所有采用的是默认的编码

如何来解决编码的问题,那就是:

  • 告诉Servlet容器使用UTF-8解码请求体(POST参数)

  • 必须在第一次调用request.getParameter()之前设置才有效

 

 

 

 如果在每个接口方法的前面都加上:

request.setCharacterEncoding("UTF-8");

就可以解决中文乱码的原因,但是这样的代码要在所有的接口中写一遍,确实优点不近人情,那么有没有什么好的解决办法,存在一个过滤器是在dispaterServlet 分发任务之前就可以执行,

所以我们可以在设置设置所有的方法都执行某个filter 这样就是统一设置编码了

 原生的过滤器:

public interface Filter {default void init(FilterConfig filterConfig) throws ServletException {}void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException;default void destroy() {}
}

其实我们只要实现这个接口,就可以了,我们可以写自己的过滤器,也可以使用spring 自带的过滤器

<filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><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>

 处理之后;

 

相关文章:

  • 微服务基础-Ribbon
  • 同样开源的自动化工作流工具n8n和Dify对比
  • 从零搭建云原生后端系统 —— 一次真实项目实践分享
  • 迷你世界UGC3.0脚本Wiki触发器脚本交互
  • 云原生--核心组件-容器篇-4-认识Dockerfile文件(镜像创建的基础文件和指令介绍)
  • 企业数据赋能 | 应用模板分享:汽车销售仪表板
  • 《一键式江湖:Docker Compose中间件部署108式》开篇:告别“配置地狱”,从此笑傲云原生武林!》
  • 以科技之力,启智慧出行 —— 阅读《NVIDIA 自动驾驶安全报告》及观看实验室视频有感
  • 【计算机视觉】CV实战项目- Four-Flower:基于TensorFlow的花朵分类实战指南
  • 大数据学习栈记——Hive4.0.1安装
  • 运算符分为哪几类?哪些运算符常用作判断?简述运算符的优先级
  • MCP+A2A协议终极指南:AI系统构建技术全解析(医疗/金融实战+Streamable HTTP代码详解)
  • Vue Router 核心指南:构建高效单页应用的导航艺术
  • Spring MVC 拦截器教程
  • 08-STM32外部中断
  • 【题解-Acwing】861. 二分图的最大匹配
  • 云原生 | K8S中数据存储之StorageClass
  • MAGI-1: Autoregressive Video Generation at Scale
  • 【MySQL】数据类型和表的操作
  • 在 UniApp 中实现 App 与 H5 页面的跳转及通信
  • 第二艘国产大型邮轮爱达·花城号完成坞内起浮
  • 中日友好医院通报“医师肖某被举报”:基本属实,开除党籍并解聘
  • 上海明天起进入“升温通道”,五一假期冲刺33℃
  • VR数字沉浸体验又添新节目,泰坦尼克号驶进文旅元宇宙
  • 福建省莆田市原副市长胡国防接受审查调查
  • 70后供销合作总社理事会原副主任侯顺利任中国融通外部董事