乱码问题

测试步骤:

1、我们可以在首页编写一个提交的表单

<form action="/e/t" method="post"><input type="text" name="name"><input type="submit">
</form>

2、后台编写对应的处理类

@Controller
public class Encoding {@RequestMapping("/e/t")public String test(Model model,String name){model.addAttribute("msg",name); //获取表单提交的值return "test"; //跳转到test页面显示输入的值}
}

3、输入中文测试,发现乱码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NCmtZ64j-1609735445593)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20210103003228667.png)]

不得不说,乱码问题是在我们开发中十分常见的问题,也是让我们程序猿比较头大的问题!

以前乱码问题通过过滤器解决 , 而SpringMVC给我们提供了一个过滤器 , 可以在web.xml中配置 .

修改了xml文件需要重启服务器!

<filter><filter-name>encoding</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>
</filter>
<filter-mapping><filter-name>encoding</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>

但是我们发现 , 有些极端情况下.这个过滤器对get的支持不好 .

处理方法 :

1、修改tomcat配置文件 :设置编码!

<Connector URIEncoding="utf-8" port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />

2、自定义过滤器

package com.kuang.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;/**
* 解决get和post请求 全部乱码的过滤器
*/
public class GenericEncodingFilter implements Filter {@Overridepublic void destroy() {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChainchain) 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);}@Overridepublic 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;}// 对需要增强方法 进行覆盖@Overridepublic 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<String, String[]> 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();}//取一个值@Overridepublic String getParameter(String name) {Map<String, String[]> parameterMap = getParameterMap();String[] values = parameterMap.get(name);if (values == null) {return null;}return values[0]; // 取回参数的第一个值}//取所有值@Overridepublic String[] getParameterValues(String name) {Map<String, String[]> parameterMap = getParameterMap();String[] values = parameterMap.get(name);return values;}
}

这个也是我在网上找的一些大神写的,一般情况下,SpringMVC默认的乱码处理就已经能够很好的解决了!

然后在web.xml中配置这个过滤器即可!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zAujAWQn-1609735445595)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20210104124235595.png)]

乱码问题,需要平时多注意,在尽可能能设置编码的地方,都设置为统一编码 UTF-8!

文章中文字乱码问题解决办法集合相关推荐

  1. linux mysql 存储过程乱码,mysql存储过程中 乱码问题解决办法

    中文乱码无论在何时都是一个头疼的问题,mysql的存储过程参数也同样存在这个问题. 1.直接使用insert into语句没问题,能够正常插入汉字. 2.把insert into语句移到Procedu ...

  2. java.net.url 中文乱码_jsp get Url请求方式中文乱码问题解决办法

    本文章来给大家介绍关于jsp get Url请求方式中文乱码问题解决办法,有需要的朋友可参考. jsp中post方式请求一般不会乱码,如果乱码加上这句: 解决办法一 代码如下 复制代码 request ...

  3. php 和mysql中文乱码问题,常见php与mysql中文乱码问题解决办法

    常见php与mysql中文乱码问题解决办法 乱码问题1:用PHPmyAdmin操作MySQL数据库汉字显示正常,但用PHP网页显示MySQL数据时所有汉字都变成了?号. 症状:用PHPmyAdmin输 ...

  4. ASP+Access UTF-8 网页乱码问题解决办法

    用ACCESS数据库和ASP做网站时用UTF-8编码有时会出现乱码,再者网页出错或者刷新页面后就是乱码,如果数据库取值乱码在开头加上<%@LANGUAGE="VBSCRIPT" ...

  5. elasticsearch安装过程中的license问题解决办法

    elasticsearch安装过程中的license问题解决办法 参考文章: (1)elasticsearch安装过程中的license问题解决办法 (2)https://www.cnblogs.co ...

  6. java文件下载至linux乱码,JAVA 文件下载乱码问题解决办法

    页面设置隐藏的iframe 页面下载按钮 id="btnDown" href="javascript:void(download('btnDown'))" &g ...

  7. libreoffice转换文件为pdf文件乱码问题解决办法

    libreoffice转换文件为pdf文件乱码问题解决办法 参考文章: (1)libreoffice转换文件为pdf文件乱码问题解决办法 (2)https://www.cnblogs.com/heim ...

  8. C# asp.net页面通过URL参数传值中文乱码问题解决办法

    C# asp.net页面通过URL参数传值中文乱码问题解决办法 参考文章: (1)C# asp.net页面通过URL参数传值中文乱码问题解决办法 (2)https://www.cnblogs.com/ ...

  9. UTF-8的CSV文件中文乱码问题解决办法

    UTF-8的CSV文件中文乱码问题解决办法 参考文章: (1)UTF-8的CSV文件中文乱码问题解决办法 (2)https://www.cnblogs.com/leaves1024/p/1117138 ...

最新文章

  1. 怎么保证缓存和数据库一致性
  2. Mosaic获5.5亿美元住宅太阳能融资贷款
  3. 构件图(Component Diagram)—UML图(八)
  4. Boost::filesystem的使用笔记
  5. 从状态转移看:载波侦听多路访问/冲突避免(CSMA/CA)
  6. 阿里巴巴Linux开源镜像站 华为Linux开源镜像站 Linux宝塔面板
  7. 【JAVA SE】第十五章 ArrayList、LinkedList、HashMap和HashSet
  8. Notes on Operating System
  9. 由QCustomplot引发drawPolyline和drawLine的区别
  10. DZS与EPS Global合作,加速下一代接入基础设施在欧洲和亚洲的应用
  11. 软件开发入门【3分钟课程】
  12. Unity3D天气系统插件UniStorm 3.0.1.1 插件使用说明
  13. 迅雷边下边看实现过程分析
  14. Voxblox: Incremental 3D Euclidean Signed Distance Fields for On-Board MAV Planning
  15. python快递分拣_快递背后的黑科技,你造吗?
  16. overflow and underflow
  17. java-基本数据结构-单链表
  18. 关于TCP/IOCP构架中出现的假死连接解决方案
  19. php做宿舍门禁管理系统项目首选公司,宿舍人脸识别门禁系统,校园宿舍管理系统...
  20. Matlab 伪彩色处理方法总结(密度分割法、灰度级变换法、频域变换法)

热门文章

  1. java jar 目录_将Java类路径中的所有jar包括在一个目录中
  2. mysql字符集变为gbk_MYSQL数据库默认latin1字符集转换为GBK或UTF8
  3. Spring boot——起步依赖
  4. Codeforces Round #617 (Div. 3) E2. String Coloring (hard version) 思维 + dp + Dilworth定理
  5. cf1557 C. Moamen and XOR
  6. P1850 [NOIP2016 提高组] 换教室
  7. 牛客题霸 [判断回文] C++题解/答案
  8. P5787 二分图 /【模板】线段树分治(线段树分治、并查集)
  9. U86650-群鸡乱舞【矩阵乘法】
  10. jzoj1266,P1879-[USACO06NOV]玉米田Corn Fields【状态压缩,dp】