SpringMVC出现中文乱码的情况及怎么解决
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"SpringMVC出现中文乱码的情况及怎么解决"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"SpringMVC出现中文乱码的情况及怎么解决"
千家信息网最后更新 2026年11月03日SpringMVC出现中文乱码的情况及怎么解决使用自己写的过滤器
使用SpringMVC提供的过滤器
这篇文章主要介绍"SpringMVC出现中文乱码的情况及怎么解决"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"SpringMVC出现中文乱码的情况及怎么解决"文章能帮助大家解决问题。
背景
举个例子,出现中文乱码的例子:提交表单的时候。
表单
<%@ page contentType="text/html;charset=UTF-8" language="java" %> Title 业务控制类
package controller;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;@Controllerpublic class controllerDemo02 { @RequestMapping("/c02/t1") public String test1(String name, Model model){ System.out.println(name); model.addAttribute("message",name); return "test"; }}解决方案
使用自己写的过滤器
自定义一个Filter过滤器,去过滤乱码
package Filter;import javax.servlet.*;import java.io.IOException;public class EncodingFilter implements Filter { public void init(FilterConfig filterConfig) throws ServletException { } public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { servletRequest.setCharacterEncoding("utf-8"); servletResponse.setCharacterEncoding("utf-8"); filterChain.doFilter(servletRequest,servletResponse); } public void destroy() { }}在web.xml中配置这个过滤器
EncodingFilter Filter.EncodingFilter EncodingFilter /* 使用SpringMVC提供的过滤器
直接在web.xml中配置(固定的)
encoding org.springframework.web.filter.CharacterEncodingFilter encoding utf-8 encoding /* 如果上面两种方法还实现不了,在试试以下这个方法,大神编写的
package Filter;import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRequestWrapper;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.Map;public class GenericEncodingFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //处理response的字符编码 HttpServletResponse myResponse=(HttpServletResponse) response; myResponse.setContentType("text/html;charset=UTF-8"); // 转型为与协议相关对象 HttpServletRequest httpServletRequest = (HttpServletRequest) request; // 对request包装增强 HttpServletRequest myrequest = new MyRequest(httpServletRequest); chain.doFilter(myrequest, response); } public void init(FilterConfig filterConfig) throws ServletException { }}//自定义request对象,HttpServletRequest的包装类class MyRequest extends HttpServletRequestWrapper { private HttpServletRequest request; //是否编码的标记 private boolean hasEncode; //定义一个可以传入HttpServletRequest对象的构造函数,以便对其进行装饰 public MyRequest(HttpServletRequest request) { super(request);// super必须写 this.request = request; } // 对需要增强方法 进行覆盖 public Map getParameterMap() { // 先获得请求方式 String method = request.getMethod(); if (method.equalsIgnoreCase("post")) { // post请求 try { // 处理post乱码 request.setCharacterEncoding("utf-8"); return request.getParameterMap(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } else if (method.equalsIgnoreCase("get")) { // get请求 Map parameterMap = request.getParameterMap(); if (!hasEncode) { // 确保get手动编码逻辑只运行一次 for (String parameterName : parameterMap.keySet()) { String[] values = parameterMap.get(parameterName); if (values != null) { for (int i = 0; i < values.length; i++) { try { // 处理get乱码 values[i] = new String(values[i] .getBytes("ISO-8859-1"), "utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } } hasEncode = true; } return parameterMap; } return super.getParameterMap(); } //取一个值 public String getParameter(String name) { Map parameterMap = getParameterMap(); String[] values = parameterMap.get(name); if (values == null) { return null; } return values[0]; // 取回参数的第一个值 } //取所有值 public String[] getParameterValues(String name) { Map parameterMap = getParameterMap(); String[] values = parameterMap.get(name); return values; }} 关于"SpringMVC出现中文乱码的情况及怎么解决"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
乱码
utf-8
中文
方法
过滤器
情况
对象
知识
编码
处理
例子
行业
表单
包装
配置
不同
实用
业务
内容
函数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广州百单互联网科技有限公司
互联网科技行业发展
科技互联网项目
科技类互联网
奇酷互联网科技公司
互联网科技革命
广州互联网络科技有限公司
互联网前沿科技
互联网科技创新企业排名
玖二柒互联网科技公司待遇
杭州壁岐互联网科技有限公司
恒生互联网科技指数跳水
坤平互联网科技
内蒙古九一互联网科技
济南有互联网科技公司吗
互联网科技融合创新
互联网科技包装股
国产互联网科技公司
中国新注册互联网科技
易租星互联网科技有限公司
互联网科技工作委员会毛军
新浪科技互联网
中国最先进互联网科技公司
北京大学互联网科技怎么样
互联网新科技动漫ppt素材
企晟互联网信息科技有限公司
深圳艾果互联网通讯科技
长沙互联网科技
科技信息时代互联网发展
恒生互联网科技趋势