中文乱码分类:

(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

package cn.dfx.share_record_SSM.dsum.util;

import java.io.IOException;

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 javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class CharacterEncodingFilter implements Filter{ private String encoding=null;
public void destroy() { } public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse)resp; request.setCharacterEncoding(encoding);
chain.doFilter(request,response);
response.setContentType("text/html;charset=UTF-8");
} //得到配置文件中的初始化参数
public void init(FilterConfig config) throws ServletException {
encoding = config.getInitParameter("encoding");
} }

拦截器在web.xml中的配置

 <filter>
<filter-name>character</filter-name>
<filter-class>cn.dfx.share_record_SSM.dsum.util.CharacterEncodingFilter</filter-class> <init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter> <filter-mapping>
<filter-name>character</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

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

 <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>

方法四:在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

 <!-- 处理spring的Controller类中返回json数据 中文乱码的配置 -->
<bean class = "org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters"> <array>
<bean class = "org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes" value = "text/plain;charset=UTF-8" /> </bean> </array>
</property>
</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. CSS 控制鼠标在元素停留的样式

    以下资料来自网络,收藏学习总结用: 有时候需要改变鼠标样式,DIV 可以改成手型等,A也可以改成光标形式 巧合要用到鼠标样式效果,就顺便整理了下十五种CSS鼠标样式,小例子供大家使用啊.CSS鼠标样式 ...

  2. Golang的session管理器

    对于一些需要对用户进行管理(比如验证操作的权限等)的站点来说,session管理器是必不可少的.下面实现了一个线程安全的简单session管理类.生产环境:golang1.4.2+win7x64gol ...

  3. python 多进程和多线程

    在计算大量数据时,可以使用多进程 多线程机制来加速计算 多进程 import multiprocessing import os def run_proc(name): print('Child pr ...

  4. sql server auto increment - trace flag 272

    从 sql 2012 开始, 微软为了让 insert 时 auto increment 快一些,做了一个 cache 的机制. 这个机制虽然好,但是也有麻烦的情况,如果你的 sql 突然 resta ...

  5. win10安装PS和AI后报代码为16的错误解决方法

    win10安装PS和AI后报代码为16的错误解决方法 一.总结 一句话总结:修改兼容性和以管理员方式运行就可以了 修改兼容性 以管理员身份运行 二.PS和AI安装后报代码为16的错误解决方法介绍(转) ...

  6. javascript之封装(引用网络)

    一. 例:事件监听封装 jQuery 中的事件监听,完全可以用 addEventListener/attachEvent 模拟,分别对应于现代浏览器和 IE ,可以把两个方法封装一下,但是为了方便,这 ...

  7. java.lang.RuntimeException: Unable to start activity ComponentInfo……AppCompat does not support the current theme features

    Android测试时出现闪退的问题,出现了如下所示异常: java.lang.RuntimeException: Unable to start activity ComponentInfo{thon ...

  8. LeetCode--278--第一个错误的版本

    问题描述: 你是产品经理,目前正在带领一个团队开发新的产品.不幸的是,你的产品的最新版本没有通过质量检测.由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的. 假设你有 n 个 ...

  9. mongodb shell和Node.js driver使用基础

    开始: Mongo Shell 安装后,输入mongo进入控制台: //所有帮助 > help //数据库的方法 > db.help() > db.stats() //当前数据库的状 ...

  10. HDOJ 1022 Train Problem

    两个数组存进出顺序,如果不同进栈,相同出栈.