中文乱码分类:

(1)按照请求分类:

  GET请求乱码

  POST请求乱码

(2)按照乱码位置分类

  从前台传到后台的数据乱码(存储到数据库中的数据乱码)

  从后台传到前台的数据乱码(显示在页面的数据乱码)

乱码的解决方式:

(1)GET请求中请求参数乱码(注意:GET请求乱码,Spring的配置以及编码拦截器的配置是无效的)

方法一: 在后台处理编码,通过getBytes方法转换编码方式
String username = request.getParameter("username"); //获取请求参数值
username = new String(username.getBytes("iso8859-1"),"UTF-8");//将请求参数值转换为UTF-8编码格式

方法二:在客户端使用 URLEncoder.encode(name,”UTF-8”)对中文参数进行编码,在服务器端需要进行解码naem = java.net.URLDecoder.decode(name, “UTF-8”));
    /* jsp页面中使用超链接跳转:   响应删除笔记评论 */
    function deleteNoteComment(name){
        window.location.href="<%=request.getContextPath() %>/note/deleteComment.do?name="+URLEncoder.encode(name,"UTF-8”);
     }

  //Spring 的controller类中接收请求参数

  String  name = request.getParameter(“name”); //得到请求参数

name = URLDecoder.decode(name, “UTF-8”)); //将请求参数转换为UTF-8编码格式

方法三:修改tomcat的server.xml文件:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1"
redirectPort="8443" URIEncoding="UTF-8"
useBodyEncodingForURI="true"/>

(2)POST请求中文乱码解决方法

方法一:通过设置请求参数的编码

在方法的第一句添加语句 : request.setCharacterEncoding("UTF-8");

在方法的最后一句添加语句: response.setContentType("text/html;charset=UTF-8");

方法二:编写编码拦截器

拦截器类 CharacterEncodingFilter .java

  1. package cn.dfx.share_record_SSM.dsum.util;
  2.  
  3. import java.io.IOException;
  4.  
  5. import javax.servlet.Filter;
  6. import javax.servlet.FilterChain;
  7. import javax.servlet.FilterConfig;
  8. import javax.servlet.ServletException;
  9. import javax.servlet.ServletRequest;
  10. import javax.servlet.ServletResponse;
  11. import javax.servlet.http.HttpServletRequest;
  12. import javax.servlet.http.HttpServletResponse;
  13.  
  14. public class CharacterEncodingFilter implements Filter{
  15.  
  16. private String encoding=null;
  17. public void destroy() {
  18.  
  19. }
  20.  
  21. public void doFilter(ServletRequest req, ServletResponse resp,
  22. FilterChain chain) throws IOException, ServletException {
  23. HttpServletRequest request = (HttpServletRequest)req;
  24. HttpServletResponse response = (HttpServletResponse)resp;
  25.  
  26. request.setCharacterEncoding(encoding);
  27. chain.doFilter(request,response);
  28. response.setContentType("text/html;charset=UTF-8");
  29. }
  30.  
  31. //得到配置文件中的初始化参数
  32. public void init(FilterConfig config) throws ServletException {
  33. encoding = config.getInitParameter("encoding");
  34. }
  35.  
  36. }

拦截器在web.xml中的配置

  1. <filter>
  2. <filter-name>character</filter-name>
  3. <filter-class>cn.dfx.share_record_SSM.dsum.util.CharacterEncodingFilter</filter-class>
  4.  
  5. <init-param>
  6. <param-name>encoding</param-name>
  7. <param-value>UTF-8</param-value>
  8. </init-param>
  9. </filter>
  10.  
  11. <filter-mapping>
  12. <filter-name>character</filter-name>
  13. <url-pattern>/*</url-pattern>
  14. </filter-mapping>

方法三:直接使用Spring的编码拦截器,在web.xml文件中添加配置

  1. <filter>
  2. <filter-name>encodingFilter</filter-name>
  3. <filter-class>
  4. org.springframework.web.filter.CharacterEncodingFilter
  5. </filter-class>
  6. <init-param>
  7. <param-name>encoding</param-name>
  8. <param-value>UTF-8</param-value>
  9. </init-param>
  10. <init-param>
  11. <param-name>forceEncoding</param-name>
  12. <param-value>true</param-value>
  13. </init-param>
  14. </filter>
  15. <filter-mapping>
  16. <filter-name>encodingFilter</filter-name>
  17. <url-pattern>/*</url-pattern>
  18. </filter-mapping>

方法四:在Spring的Controller类中的RequestMapping配置

@RequestMapping(value="/goMain",produces="application/json;charset=UTF-8")

或者 :  @RequestMapping(value="/goMain",produces="text/html;charset=UTF-8")

方法五:在Spring的主配置文件中添加以下配置(这是绝招了!!!) spring-servlet.xml

  1. <!-- 处理spring的Controller类中返回json数据 中文乱码的配置 -->
  2. <bean class = "org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
  3. <property name="messageConverters"> <array>
  4. <bean class = "org.springframework.http.converter.StringHttpMessageConverter">
  5. <property name="supportedMediaTypes" value = "text/plain;charset=UTF-8" /> </bean> </array>
  6. </property>
  7. </bean>

SpringMVC中文乱码的解决办法的更多相关文章

  1. C#中WebClient使用DownloadString中文乱码的解决办法

    原文:C#中WebClient中文乱码的解决办法 第一次尝试: string question = textBox1.Text.ToString(); WebClient client= new We ...

  2. 详解get请求和post请求参数中文乱码的解决办法

    首先出现中文乱码的原因是tomcat默认的编码方式是"ISO-8859-1",这种编码方式以单个字节作为一个字符,而汉字是以两个字节表示一个字符的. 一,get请求参数中文乱码的解 ...

  3. Source Insight 4 中文乱码的解决办法(source insight 3.5 及以下版本就到其他地方看看吧)

    干货:Source Insight 4 中文乱码的解决办法(source insight 3.5 及以下版本就到其他地方看看吧) [解决办法]: 菜单栏中[File]->[Reload As E ...

  4. IDEA使用maven构建时控制台中文乱码的解决办法

    使用maven clean install 项目时控制台中文乱码,解决办法如下: Setting->maven->runner VMoptions: -Dfile.encoding=UTF ...

  5. resin后台输出中文乱码的解决办法!

    resin后台输出中文乱码的解决办法! 学习了:https://blog.csdn.net/kobeguang/article/details/34116429 编辑conf/resin.con文件: ...

  6. php使用curl获取文本出现中文乱码的解决办法

    在使用php的curl获取远程html文本时出现了中文乱码. 解决办法的代码如下: $url = "www.ecjson.com";//获取页面内容$ch = curl_init( ...

  7. get请求和post请求参数中文乱码的解决办法

    get请求参数中文乱码的解决办法 在tomcat的server.xml里的Connector加个URIEncoding="UTF-8",把 <Connector connec ...

  8. Windows 2012 中文乱码的解决办法

    背景:服务器安装2012 R2英文环境,软件为中文显示.已下载中文语言包安装到服务器上 现象:TXT文档的中文在服务器上打开显示为乱码,复制到本地电脑上可正常显示 解决办法:控制面板-语言-更改日期. ...

  9. Keil µVision4 中出现中文乱码的解决办法

    首先得说一下,以前都没有遇到过类似的问题,但是看到有个同学曾经满篇的乱码那叫个心疼. 这里我所说的办法其实只是格式转换的问题,对于其他原因造成的,可能会在以后遇到的时候再来处理了.另外,在将代码文件转 ...

随机推荐

  1. 对象反序列化出现类型不匹配的情况(spring-boot-devtools)

    目前在做springboot项目的shiro session redis共享功能.但是有一个对象我把它放到redis中之后再取出来就会出现类型不匹配的异常 AuthorizationUser user ...

  2. HeadFIrst Ruby 第二章总结 methods and classes

    HeadFIrst Ruby 第二章总结 methods and classes 前言 这一章讲了如何创建自己的 class,并且讲了在用 class 创建 object 的两个要素: instanc ...

  3. Javascript 第五章总结:A trip to Objectville

    前言 在以前的代码中,我们使用 primitive 类型的变量和 procedural manner 来执行脚本.但是,更好的办法是 object-oriented (面向对象)的.作者说:它能让我们 ...

  4. boke例子:用户登录

    boke例子:用户登录 1.首先创建user表,authority表(角色),user_authority,表(用户角色表) Authority实体类,需要继承:GrantedAuthority类, ...

  5. 如何抓取Amazon大图

    https://www.douban.com/note/277033391/ 進入到日本Amazon看到某些商品有預覽圖可以放大欣賞,當你想要右鍵下載卻發現只得到空白圖或白邊圖.縮圖.切割圖,究竟原圖 ...

  6. Django的form组件

    forms组件 forms组件,是一个类.在视图函数中创建一个类,类需要继承forms.Form from django import  forms 1.校验数据 步骤和语法: 1. 创建一个form ...

  7. 373. Find K Pairs with Smallest Sums (java,优先队列)

    题目: You are given two integer arrays nums1 and nums2 sorted in ascending order and an integer k. Def ...

  8. 『TensorFlow』生成式网络中的图片预处理

    简介 这里的生成式网络是广义的生成式,不仅仅指gan网络,还有风格迁移中的类自编码器网络,以及语义分割中的类自编码器网络,因为遇到次数比较多,所以简单的记录一下. 背景 1.像素和数字 图像处理目标一 ...

  9. python_递归实现汉诺塔 (string类型的指针出错 未解决)

    在递归的时候,和数学的归纳法一致. void func( mode) { if(endCondition) { constExpression //基本项 } else { accumrateExpr ...

  10. 1013. Pairs of Songs With Total Durations Divisible by 60总持续时间可被 60 整除的歌曲

    网址:https://leetcode.com/problems/pairs-of-songs-with-total-durations-divisible-by-60/submissions/ 参考 ...