使用SpringMVC参数传递时,解决get请求时中文乱码的问题

问题描述:


使用SpringMVC参数传递时, 遇到get请求中文信息时,页面应答会显示中文乱码.

解决办法:

一,  我们需要把request.getParameter(“参数名”)获取到的字符串先用ISO-8859-1编码成字节流,然后再将其用utf-8解码成字符流,代码如下:

String str = new String(request.getParameter("参数名").getBytes("iso-8859-1"), "utf-8");

二, 我们也可以通过Tomcat配置文件,设置URL编码集(URIEncoding)设置编码.

在tomcat的server.xml配置文件中,添加 URIEncoding="UTF-8"

在这里要特别注意:当你用eclipse运行项目文件时,如果改了tomcat安装目录下的server.xml文件依旧不起作用,就要改eclipse自身配置的servers底下的server.xml文件.因为eclipse运行项目时用的是这个server.

如下图所示:

添加 URIEncoding="UTF-8"

<Connector  connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

修改为:

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

备注:

下面来解释一下这两个属性的意义:

useBodyEncodingForURI参数表示是否用request.setCharacterEncoding参数对URL提交的数据和表单中GET方式提交的数据进行重新编码,在默认情况下,该参数为false。

URIEncoding参数指定对所有GET方式请求进行统一的重新编码(解码)的编码。

URIEncoding和useBodyEncodingForURI区别是,

URIEncoding是对所有GET方式的请求的数据进行统一的重新编码,

而useBodyEncodingForURI则是根据响应该请求的页面的request.setCharacterEncoding参数对数据进行的重新编码,不同的页面可以有不同的重新编码的编码

配置useBodyEncodingForURI="true"后,可以解决普通get请求的中文乱码问题,但是对于通过ajax发起的get请求中文依然会乱码,请把useBodyEncodingForURI="true"改为URIEncoding="UTF-8"即可。

时间: 2024-10-27 05:06:29

使用SpringMVC参数传递时,解决get请求时中文乱码的问题的相关文章

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

首先出现中文乱码的原因是tomcat默认的编码方式是"ISO-8859-1",这种编码方式以单个字节作为一个字符,而汉字是以两个字节表示一个字符的. 一,get请求参数中文乱码的解决办法 对于get请求解决中文乱码有两种途径一种是修改tomcat默认的编码方式为"UTF-8" 在tomcat的server.xml里把 <Connector connectionTimeout="50000" port="8080" pro

SpringMVC 解决GET请求时中文乱码的问题

<filter>        <filter-name>CharacterEncoding</filter-name>        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>        <init-param>            <param-name>encoding</param

springmvc提供的解决post/get请求参数中文乱码问题

<!--springmvc提供的解决post/get请求参数中文乱码问题--><filter> <filter-name>encoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</p

javaweb解决post和get请求方式中文乱码问题(通用)

添加一个过滤器,解决乱码问题,代码如下: 1 import java.io.IOException; 2 import java.io.UnsupportedEncodingException; 3 import java.util.Map; 4 5 import javax.servlet.Filter; 6 import javax.servlet.FilterChain; 7 import javax.servlet.FilterConfig; 8 import javax.servlet

使用过滤器(Filter)解决请求参数中文乱码问题(复杂方式)

前述: 在写这篇笔记之前,对笔记中的设计模式进行介绍: 本篇笔记中将要使用到的设计模式是:装饰(包装)设计模式 (1)装饰(包装)设计模式口诀: ①定义一个类,实现被装饰对象的接口 ②定义一个成员变量,记住被装饰对象的引用 ③定义构造方法,传入被装饰对象的实例 ④改写要修改的方法 ⑤不需要改写的方法,调用被装饰对象的原来的方法 (2)什么时候使用装饰设计模式 当我们需要对一个类进行增强的时候,增强后的类不再当前类的范畴 例如:现在有一个     Animal类     Cat和Dog都属于动物类

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

get请求参数中文乱码的解决办法 在tomcat的server.xml里的Connector加个URIEncoding="UTF-8",把 <Connector connectionTimeout="50000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/> 改为 <Connector connectionTimeout=&qu

解决jsp中的中文乱码问题笔记

一.JSP页面显示乱码 二.表单提交中文时出现乱码 三.数据库连接 大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到 的中文乱码的问题及解决办法写出来供大家参考. 一.JSP页面显示乱码 下面的显示页面(display.jsp)就出现乱码: <html> <head> <title>JSP的中文处理</title> <meta http-equiv="Content-Type" con

解决Xshell和vim中文乱码(转载)

From:http://blog.csdn.net/lovey599/article/details/7275403 一般而言,乱码多是由于编码问题引起 的,在windows系统中,大多数情况下中文编码采用的是big5或utf-8两种,但是默认情况下确是big5,如果这样的话,请首先用locale命令查看你linux系统当前语系,执行LANG=zh_CN.big5修改语系.这里以utf8编码为例. 打开一个用utf8编码的中文文件,在vim中,执行:set encoding=utf-8 term

GET请求的中文乱码问题及处理意义

题目描述 有n张卡片,分别标有数字1~n.有一天Silence把他们按某种序列排好,然后从第一张开始取出一张,再拿一张放到最后面,再取出一张,再拿出一张放到最后面...知道n张卡片全部取走.把取出的卡片按取出的顺序排好,正好是1,2,3,4,....,n. 现在,告诉你n,Silence希望你帮他计算原来的序列的逆序数. 例如,n=4时,原来的序列应该是1,3,2,4.这样,先取出卡片1,再把卡片3放到最后面,序列变成了2,4,3.再把2取出来,4放到后面,序列变成了3,4.再把3取出来,4放最