- 浏览: 517612 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (377)
- J2EE (61)
- ORACLE (36)
- JS (15)
- EXT (0)
- win7 (12)
- TOMCAT (10)
- game (1)
- ie (5)
- etc (8)
- ibatis (3)
- ORACLE 客户端 (1)
- bat (3)
- 健康 (127)
- baby (4)
- html (12)
- myeclipse (16)
- 射手 字幕默认下载 位置 (1)
- office (0)
- car (2)
- xxx (1)
- python简介 (1)
- FusionCharts (1)
- dorado (4)
- english (3)
- weblogic (3)
- request/servlet (3)
- wsdl (1)
- offie2010 visio2010 下载 (1)
- nexus5 (0)
- chrome (3)
- ssi (2)
- 安卓 (3)
- nexus ipad (1)
- mysql (4)
- json (3)
- struts (6)
- datagrid (1)
- highcharts (1)
- tools (2)
- tool (1)
- spring3 (1)
- jedit (1)
- java (4)
- windows (1)
- easyui (2)
- 液晶显示器色温 (1)
- mybatis (1)
- where (1)
- sublime (1)
- spring4 (3)
最新评论
-
spring_springmvc:
如何在java Web项目中开发WebService接口,地址 ...
java 调用WebService服务接口 -
chenzheng8975:
阅
人生三大陷阱 -
ygbb007:
直接OD就能破解的
myBase Desktop 6.0 破解方法 -
lanlansnss:
直接删除nyfedit.ini文件即可
myBase Desktop 6.0 破解方法 -
yunzhu:
LZ写博客不太注重排版啊,排版不行别人没法看的
PermGen space
request和response的中文乱码问题
request乱码指的是:浏览器向服务器发送的请求参数中包含中文字符,服务器获取到的请求参数的值是乱码;
response乱码指的是:服务器向浏览器发送的数据包含中文字符,浏览器中显示的是乱码;
乱码产生的原因:不管是request乱码还是response乱码,其实都是由于客户端(浏览器)跟服务器端采用的编码格式不一致造成的。
以request乱码为例:浏览器向服务器发送请求,因为浏览器与服务器之间的通信实质上是socket流,所以要先将请求参数(字符)转换成字节,也就是编码过程,服务器接收到请求参数后进行解码(字节转字符),然后封装到request对象中。如果客户端的编码与服务器端的解码不统一,就会导致通过request获取到的请求参数的值是乱码。
解决乱码:
一、response乱码
服务器发给浏览器的数据默认是按照ISO-8859-1编码,浏览器接收到数据后按照默认的字符集进行解码后显示,如果浏览器的默认解码字符集不是ISO-8859-1,就出现乱码。
对于response乱码,只需要在服务器端指定一个编码字符集,然后通知浏览器按照这个字符集进行解码就可以了。有三种方式:
1、response.setCharacterEncoding("utf-8”);//设置服务器端的编码,默认是ISO-8859-1;该方法必须在response.getWriter()之前进行设置
response.setHeader("contentType", "text/html; charset=utf-8”);//通知浏览器服务器发送的数据格式是text/html,并要求浏览器使用utf-8进行解码。
2、response.setContentType("text/html;charset=utf-8”);//等同于response.setHeader("contentType", "text/html; charset=utf-8”);它其实会覆盖
response.setCharacterEncoding("utf-8”) ,在开发中只需要设置response.setContentType("text/html;charset=utf-8”)就可以了。意思是通知浏览器服务器发送的数据格式是text/html,服务器采用utf-8编码,并要求浏览器使用utf-8进行解码。
3、response.setCharacterEncoding("utf-8”);//设置服务器端的编码为utf-8
response.getWriter().println("<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>”);//要求浏览器使用utf-8进行解码
可以看出,第二种方式是最简便的,这也是我们在开发中最常使用的方式。
二、request乱码
从浏览器发起的访问方式有三种:在地址栏直接输入URL访问、点击页面中的超链接访问、提交表单访问。第一种访问方式浏览器默认将参数按照utf-8进行编码,后面两种访问方式浏览器将参数按照当前页面的显示编码进行编码。所以对于request乱码,只需要在服务器端设置相应的解码格式即可。由于访问方式不同,浏览器对参数的编码格式也不同,为了方便处理,通过超链接和表单的访问也规定必须是utf-8格式,即显示当前页面的编码也要使用utf-8,这样浏览器将统一使用utf-8对参数进行编码。
在服务器端,通过request.setCharacterEncoding("utf-8”)即可设置服务器的解码为utf-8(默认是ISO-8859-1),但是它只对请求体里面的参数有效;如果参数跟在请求行中的uri后边,它就无能为力了。因此请求方式不同,解决乱码的方案也不同。
1、post方式
post方式属于表单提交,参数存在于请求体中,通过request.setCharacterEncoding("utf-8”)即可解决乱码。
2、get方式
get方式提交的参数会跟在请求行中的uri后边,服务器按照默认的iso-8859-1进行解码,这时候解决乱码有两种办法:
办法一:修改服务器端对uri参数的默认编码
在tomcat的server.xml中,设置<Connector ….>元素的属性URIEncoding="UTF-8”即可。(默认没有设置此属性)
例如:<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8”/>
注意:1、设置<Connector ….>元素的属性useBodyEncodingForURI=“true”,意思是请求体和uri使用相同的编码格式。通过设置这两个属性,既可以解决get方式的乱码,又可以解决 post方式的乱码。2、通过修改server.xml指定服务器对get和post统一按照utf-8解码,要求tomcat管理下的所有web应用都要使用utf-8编码,即所有的jsp、html页面都使用utf-8编码。比如 JSP页面的头信息是这样的:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"]]>
<html]]>
<head]]>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"]]>
<title]]>Insert title here</title]]>
</head]]>
办法二:逆向操作
参数从浏览器到服务器,经过客户端utf-8编码,服务器端iso-8859-1解码,最终成为乱码。那我们将乱码进行相反的编解码,即可得到正常的参数值。
例如:String name = request.getParameter("name”);//得到乱码
name = new String(name.getBytes("iso-8859-1"),"utf-8”);//得到正常的name值
注意:name.getBytes();如果不指定编码,默认按照gb2312进行编码。
request乱码指的是:浏览器向服务器发送的请求参数中包含中文字符,服务器获取到的请求参数的值是乱码;
response乱码指的是:服务器向浏览器发送的数据包含中文字符,浏览器中显示的是乱码;
乱码产生的原因:不管是request乱码还是response乱码,其实都是由于客户端(浏览器)跟服务器端采用的编码格式不一致造成的。
以request乱码为例:浏览器向服务器发送请求,因为浏览器与服务器之间的通信实质上是socket流,所以要先将请求参数(字符)转换成字节,也就是编码过程,服务器接收到请求参数后进行解码(字节转字符),然后封装到request对象中。如果客户端的编码与服务器端的解码不统一,就会导致通过request获取到的请求参数的值是乱码。
解决乱码:
一、response乱码
服务器发给浏览器的数据默认是按照ISO-8859-1编码,浏览器接收到数据后按照默认的字符集进行解码后显示,如果浏览器的默认解码字符集不是ISO-8859-1,就出现乱码。
对于response乱码,只需要在服务器端指定一个编码字符集,然后通知浏览器按照这个字符集进行解码就可以了。有三种方式:
1、response.setCharacterEncoding("utf-8”);//设置服务器端的编码,默认是ISO-8859-1;该方法必须在response.getWriter()之前进行设置
response.setHeader("contentType", "text/html; charset=utf-8”);//通知浏览器服务器发送的数据格式是text/html,并要求浏览器使用utf-8进行解码。
2、response.setContentType("text/html;charset=utf-8”);//等同于response.setHeader("contentType", "text/html; charset=utf-8”);它其实会覆盖
response.setCharacterEncoding("utf-8”) ,在开发中只需要设置response.setContentType("text/html;charset=utf-8”)就可以了。意思是通知浏览器服务器发送的数据格式是text/html,服务器采用utf-8编码,并要求浏览器使用utf-8进行解码。
3、response.setCharacterEncoding("utf-8”);//设置服务器端的编码为utf-8
response.getWriter().println("<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>”);//要求浏览器使用utf-8进行解码
可以看出,第二种方式是最简便的,这也是我们在开发中最常使用的方式。
二、request乱码
从浏览器发起的访问方式有三种:在地址栏直接输入URL访问、点击页面中的超链接访问、提交表单访问。第一种访问方式浏览器默认将参数按照utf-8进行编码,后面两种访问方式浏览器将参数按照当前页面的显示编码进行编码。所以对于request乱码,只需要在服务器端设置相应的解码格式即可。由于访问方式不同,浏览器对参数的编码格式也不同,为了方便处理,通过超链接和表单的访问也规定必须是utf-8格式,即显示当前页面的编码也要使用utf-8,这样浏览器将统一使用utf-8对参数进行编码。
在服务器端,通过request.setCharacterEncoding("utf-8”)即可设置服务器的解码为utf-8(默认是ISO-8859-1),但是它只对请求体里面的参数有效;如果参数跟在请求行中的uri后边,它就无能为力了。因此请求方式不同,解决乱码的方案也不同。
1、post方式
post方式属于表单提交,参数存在于请求体中,通过request.setCharacterEncoding("utf-8”)即可解决乱码。
2、get方式
get方式提交的参数会跟在请求行中的uri后边,服务器按照默认的iso-8859-1进行解码,这时候解决乱码有两种办法:
办法一:修改服务器端对uri参数的默认编码
在tomcat的server.xml中,设置<Connector ….>元素的属性URIEncoding="UTF-8”即可。(默认没有设置此属性)
例如:<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8”/>
注意:1、设置<Connector ….>元素的属性useBodyEncodingForURI=“true”,意思是请求体和uri使用相同的编码格式。通过设置这两个属性,既可以解决get方式的乱码,又可以解决 post方式的乱码。2、通过修改server.xml指定服务器对get和post统一按照utf-8解码,要求tomcat管理下的所有web应用都要使用utf-8编码,即所有的jsp、html页面都使用utf-8编码。比如 JSP页面的头信息是这样的:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"]]>
<html]]>
<head]]>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"]]>
<title]]>Insert title here</title]]>
</head]]>
办法二:逆向操作
参数从浏览器到服务器,经过客户端utf-8编码,服务器端iso-8859-1解码,最终成为乱码。那我们将乱码进行相反的编解码,即可得到正常的参数值。
例如:String name = request.getParameter("name”);//得到乱码
name = new String(name.getBytes("iso-8859-1"),"utf-8”);//得到正常的name值
注意:name.getBytes();如果不指定编码,默认按照gb2312进行编码。
发表评论
-
HttpClient4.X的代理密码
2018-07-11 23:48 819HttpClient4.X的代理添加实现(转自http://b ... -
Enable debug logging for this logger for a complete list of JARs that were scann
2018-06-28 21:59 1713修改EL表达式,例如"${owner.new}& ... -
job spring3--spring4
2017-12-28 09:21 410job spring3-->spring4 org ... -
java的(PO,VO,TO,BO,DAO,POJO)解释
2017-06-12 10:26 494java的(PO,VO,TO,BO,DAO,POJO) ... -
高內聚、低耦合。多聚合、少繼承
2017-05-22 15:52 749面向對象原則:高內聚、低耦合。多聚合、少繼承 2015-05 ... -
savesavesavesavesavesave
2017-05-18 17:24 454savesavesavesavesavesave uploa ... -
eclipse 图标的含义
2016-10-13 15:11 456... -
log4j-struts异常日志打印
2016-08-24 17:04 1023log4j.appender.myfile.layout.Co ... -
struts2 Action中获取request, response对象
2016-07-21 09:43 1131ajax不能完成文件下载, ... -
sun.misc.BASE64Encoder找不到jar包的解决方法
2015-06-29 15:10 803sun.misc.BASE64Encoder找不到jar包的解 ... -
jar 包 用途(jar功能对照表)
2015-04-08 16:07 1539jar包用途(jar功能对照表) axis.jar SOAP ... -
struts上传
2014-08-22 15:37 434jsp页面 <meta http-equiv=" ... -
java调用打印机打印自定义的图片
2014-08-19 16:03 3757package test; import java.awt. ... -
JAVA基类和派生类
2014-05-22 16:02 1249JAVA基类和派生类 从 ... -
web.xml配置详解
2014-02-20 08:56 7822007-10-16 17:12 Web.XML 配 ... -
不要使用sun.misc.BASE64Encoder
2014-02-18 10:10 1134一直以来Base64的加密解密都是使用sun.misc包下的B ... -
自定义Result
2014-01-13 10:18 698自定义Result 5.7.1 什么是自定义Result ... -
ant+javadoc生成API文档
2014-01-02 17:16 914ant+javadoc生成API文档 分类: ant 2006 ... -
ssi包下载
2013-12-27 10:15 924Spring官网改版后找了好 ... -
webAppRootKey参数问题
2013-12-25 14:40 748...
相关推荐
RestSharp 在请求接口的时候,返回中文的话,一些特殊编码,比如gbk,从Response中解析出来的值会乱码,修改了一点点源代码,留一下记录以免忘记 该版本是github上,最新一个版本。下载时间是 20170821
中文乱码解决方法 1、常识了解 2、中文乱码出现 3、response中文乱码 4、request乱码问题
asp.net默认的编码是UTF-8 ...当你要在aspx页面上进行传中文参数时会出现乱码 asp.net中文乱码:asp.net(C#)中文乱码问题 <-----request.aspx--接收参数页-----> <----response.aspx--传送参数页----->
string path = request.PhysicalPath;//获取客户端请求的文件的物理地址 if (File.Exists(path)) { string fileName = System.IO.Path.GetFileName(path); // 获取文件的名字 if (Request.UserAgent.Contains(...
此功能已进入试用一周了,都没有问题,奇怪的是今天出现了问题?? 代码如下:AjaxRequestObj.createEqStatusParameter=function() { if (eqStatusArray.length < 1) { return; } var paramNameArray = new Array...
// //解决POST表单的中文乱码问题 // request.setCharacterEncoding("utf-8"); // //接收method属性的值 // String methodName = request.getParameter("method"); // // //根据method属性的值调用相应的方法 // if...
一、有关中文乱码: mysql部分: url配置:jdbc:mysql://localhost:3306/XXX?useUnicode=true&characterEncoding=utf8 jdbc:mysql://localhost:3306/XXX?useUnicode=true&characterEncoding=utf8 创建...
一. response响应数据变成???的说明 request请求数据设置编码使用...使用jquery发送带中文参数数据的get请求得到响应数据乱码 get: post: 执行过程: 使用jquery发送post和get请求时,请求端和响应端均设置了编码,为
解决中文乱码问题的几个实例,其中有jsp页面,request和response的,几种编码解决小案例;
发现很多园子里的人在处理Response下载文件名是使用这个方法 Response.AppendHeader(“Content-Disposition”, “attachment;filename=” + HttpUtility.UrlEncode(fileInfo.Name, System.Text.Encoding.UTF8)); 但...
(3) 但是如果你访问另一个属性text时,会返回一个unicode对象,乱码问题就会常常发成在这里。 (4) 因为Response对象会通过另一个属性encoding来将字节码编码成unicode,而这个encoding属性居然是responses自己猜出来...
wml中文乱码及wml按钮设置。 在servlet里面的doget和dopost方法设置 request.setCharacterEncoding("UTF-8"); response.setContentType(Const.CONTENT_TYPE);//Const.CONTENT_TYPE为:text/vnd.wap.wml;charset=...
jsp代码: import javax.servlet.*;... public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) { try { HttpServletRequest httpRequest = (HttpServle
ajax中文乱码问题在中文中经常会出现这种问题,其实只要稍加注意就不会出现ajax中文乱码这回事情了,注意前后台编码一致.你用的是中文.而ajax传输数据的时候用的是utf-8 ,还有对ajax get方法时最好escape 或urlcode,...
5. JSP页面通过URL传递中文参数的乱码问题 139 四、 Struts2 140 (一) 基于struts2的web应用的开发步骤 140 1. MVC设计模式() 140 2. 基于struts的web应用的开发步骤 141 3. 如何写自定义action,实体,以及业务类...
在android开发中我们常常遇到与到乱码问题,遇到乱码问题首先我们要先检查两端编码格式是否一致! 一般我们提交数据用get 和post方法,这两种方法在上传中有con.setRequestProperty(Charset, UTF-8); 和...
今天为大家介绍fiddler的3种使用技巧,(1)Fiddler抓包显示域名IP(2)解决Fiddler抓包时中文乱码问题(3)利用fiddler模拟发送get/post请求的方法
使用Response.Redirect方法传递汉字,有时会发现所传递的值和接收到的内容不符,接受的值丢失了几个字或者变成了一堆乱码.那么如何才能保证所传递的汉字被正确接收呢? 页面A传递值的代码如下: string Message=Server...