SpringMVC中文乱码的解决办法
中文乱码分类:
(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中文乱码的解决办法的更多相关文章
- C#中WebClient使用DownloadString中文乱码的解决办法
原文:C#中WebClient中文乱码的解决办法 第一次尝试: string question = textBox1.Text.ToString(); WebClient client= new We ...
- 详解get请求和post请求参数中文乱码的解决办法
首先出现中文乱码的原因是tomcat默认的编码方式是"ISO-8859-1",这种编码方式以单个字节作为一个字符,而汉字是以两个字节表示一个字符的. 一,get请求参数中文乱码的解 ...
- Source Insight 4 中文乱码的解决办法(source insight 3.5 及以下版本就到其他地方看看吧)
干货:Source Insight 4 中文乱码的解决办法(source insight 3.5 及以下版本就到其他地方看看吧) [解决办法]: 菜单栏中[File]->[Reload As E ...
- IDEA使用maven构建时控制台中文乱码的解决办法
使用maven clean install 项目时控制台中文乱码,解决办法如下: Setting->maven->runner VMoptions: -Dfile.encoding=UTF ...
- resin后台输出中文乱码的解决办法!
resin后台输出中文乱码的解决办法! 学习了:https://blog.csdn.net/kobeguang/article/details/34116429 编辑conf/resin.con文件: ...
- php使用curl获取文本出现中文乱码的解决办法
在使用php的curl获取远程html文本时出现了中文乱码. 解决办法的代码如下: $url = "www.ecjson.com";//获取页面内容$ch = curl_init( ...
- get请求和post请求参数中文乱码的解决办法
get请求参数中文乱码的解决办法 在tomcat的server.xml里的Connector加个URIEncoding="UTF-8",把 <Connector connec ...
- Windows 2012 中文乱码的解决办法
背景:服务器安装2012 R2英文环境,软件为中文显示.已下载中文语言包安装到服务器上 现象:TXT文档的中文在服务器上打开显示为乱码,复制到本地电脑上可正常显示 解决办法:控制面板-语言-更改日期. ...
- Keil µVision4 中出现中文乱码的解决办法
首先得说一下,以前都没有遇到过类似的问题,但是看到有个同学曾经满篇的乱码那叫个心疼. 这里我所说的办法其实只是格式转换的问题,对于其他原因造成的,可能会在以后遇到的时候再来处理了.另外,在将代码文件转 ...
随机推荐
- Qt5鼠标事件及实例
mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QLa ...
- go build 和 go install
环境:Win10 + GO1.9.2 1.区别 ①go build:编译go源码生成一个可执行文件:使用-o参数可以指定生成的可执行文件名称,如go build -o test.exe ②go ins ...
- Python数据分析-Day2-Pandas模块
1.pandas简介 Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标 ...
- 雷林鹏分享:jQuery EasyUI 数据网格 - 添加分页组件
jQuery EasyUI 数据网格 - 添加分页组件 本实例演示如何从服务器端加载数据,如何添加分页组件(pagination)到数据网格(datagrid). 创建数据网格(DataGrid) 为 ...
- 雷林鹏分享:jQuery EasyUI 表单 - 表单验证
jQuery EasyUI 表单 - 表单验证 本教程将向您展示如何验证一个表单.easyui 框架提供一个 validatebox 插件来验证一个表单.在本教程中,我们将创建一个联系表单,并应用 v ...
- 中心极限定理 | central limit theorem | 大数定律 | law of large numbers
每个大学教材上都会提到这个定理,枯燥地给出了定义和公式,并没有解释来龙去脉,导致大多数人望而生畏,并没有理解它的美. <女士品茶>有感 待续~ 参考:怎样理解和区分中心极限定理与大数定律?
- spring ----> aop测试需要的Maven依赖/测试时发生的一个exception
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> &l ...
- 使用validateXxx()方法进行输入校验 --Struts2框架
1.本例是在使用validate()方法进行输入校验 --Struts2框架的基础上接着做的,上一篇使用validate()方法进行输入校验时会对当前Action中的所有方法有效,由于Struts2框 ...
- eclipse 快捷键Open Implementation 直接退出
遇到eclipse 快捷键Open Implementation 非正常退出.直接关闭的现象. 网查了一下 碰到一篇博客说 和google 输入法有关 卸载了google 输入法就好了 半信 ...
- 数组方法map(映射),reduce(规约),foreach(遍历),filter(过滤)
数组方法map(映射),reduce(规约),foreach(遍历),filter(过滤) map()方法返回一个由原数组中每一个元素调用一个指定方法后返回的新数组 reduce()方法接受一个函数作 ...