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 中出现中文乱码的解决办法
首先得说一下,以前都没有遇到过类似的问题,但是看到有个同学曾经满篇的乱码那叫个心疼. 这里我所说的办法其实只是格式转换的问题,对于其他原因造成的,可能会在以后遇到的时候再来处理了.另外,在将代码文件转 ...
随机推荐
- java web 方面
1.Tomcat的优化经验. 2.http请求的GET与POST方式的区别. (1)get是从服务器上获取数据,post是向服务器传送数据. (2)get是把参数数据队列加到提交表单的ACTION属性 ...
- Run keyword if
Wait For Page Ready ${a} Run Keyword And Return Status Page Should Contain 新建 log ${a} Run Keyword I ...
- jmap -histo pid 输出的[C [B [I [S 的含义
JMAP 输出 其中: [C is a char[][S is a short[][I is a int[][B is a byte[][[I is a int[][]
- Lab 6-2
Analyze the malware found in the file Lab06-02.exe. Questions and Short Answers What operation does ...
- 【源码分析】Mybatis使用中,同一个事物里,select查询不出之前insert的数据
一.问题场景模拟问题:第二次查询和第一次查询结果一模一样,没有查询出我新插入的数据 猜测:第二次查询走了Mybatis缓存 疑问:那为什么会走缓存呢? 1.service方法 @Override @T ...
- 20170706xlVBA汇总历时对阵数据
Public Sub GatherFilesData() Application.ScreenUpdating = False Application.DisplayAlerts = False Ap ...
- Django分页器和自定义分页器
一.自定义分页器 import copy class Pagination(): def __init__(self,request,current_page,all_data_num,each_pa ...
- 【模板/经典题型】FWT
FWT在三种位运算下都满足FWT(a×b)=FWT(a)*FWT(b) 其中or卷积和and卷积还可以通过FMT实现(本质上就是个高维前缀和) #include<bits/stdc++.h> ...
- 线性、逻辑回归的java实现
线性回归和逻辑回归的实现大体一致,将其抽象出一个抽象类Regression,包含整体流程,其中有三个抽象函数,将在线性回归和逻辑回归中重写. 将样本设为Sample类,其中采用数组作为特征的存储形式. ...
- SpringBoot系列之Hikari连接池
1.springboot 2.0 中默认连接池是Hikari,在引用parents后不用专门再添加依赖 2.application.yml中的配置 # jdbc_config datasource s ...