java设置响应编码_JAVA请求与响应编码详解
在介绍编码问题前,先介绍⼀下java平台(JVM)上的编码转化情况。⾸先要说明的⼀点,在JVM中,即java平台上,运⾏的程序⼀定都是Unicode编码⽅式的。对于代码中的字符串常量,根据代码页的设置,转化为Unicode编码。对于输⼊,在输⼊进程序中JVM已经把输⼊的内容根据原先输⼊的编码⽅式转化为Unicode。若未指明,则是⽤系统默认的编码⽅式去转化为Unicode。对于输出,则是把Unicode编码按指定的编码⽅式输出,未指明则按系统默认编码输出。四大名酒
web浏览器发送请求(request)放射源
请求时要对此请求中的参数要进⾏编码传输
Get⽅式:浏览器会根据⾃⼰的页⾯的编码格式作为起始编码格式(右击菜单编码有显⽰的),把字符使⽤浏览器的编码格式编码成byte字节进⾏传输。到了tomcat容器,tomcat会使⽤URIEncoding进⾏重新编码(解码),如果tomcat没有配置的话,就会默认使⽤iso-8859-1对byte进⾏重新解码成字符。
Post⽅式:浏览器根据⾃⼰的页⾯的编码格式作为起始编码格式(右击菜单编码有显⽰的),把字符使⽤浏览器的编码格式编码成byte字节进⾏传输。到了tomcat容器,如果tomcat没有配置的话,就会默认使⽤iso-8859-1对byte进⾏重新解码成字符。
徽州名菜
ajax⽅式:XmlHttpRequest对象的请求⽅式默认编码是UTF-8 ,当然可以重新设置,通过在Request Headers中设置Content-Type:application/x-www-form-urlencoded; charset=utf-8。为什么ajax和之前的不同呢?因为ajax不是使⽤默认的浏览器跳转提交⽅式,⽽是使⽤httprequest提交⽅式,默认跳转⽅式(get⽅式和post⽅式)会读取浏览器的编码格式,⽽httprequest不会,所以ajax就会设置⾃⼰的默认的编码格式进⾏提交(即UTF-8)。⽽使⽤ajax的post⽅法提交,⽆需再设定request的重新编码(解码)格式,因为request编码⽅式不再是默认的null(即CharacterEncoding()不是默认的null),已经修改为UTF-8,所以不⽤转换直接拿出即为UTF-8格式;⽽对于get⽅法提交的话,需要参考tomcat的URIEncoding重新编码(解码)。
若tamcat中未重新配置编码⽅式,⽽要在java⽂件中正确显⽰获取的请求数据,则可以按如下⽅式获取(不包括ajax默认的post⽅式提交):
request.setCharacterEncoding("UTF-8");
String text = Parameter("text");
电脑听不到声音System.out.println(text);或
String text = new Parameter("text").getBytes("ISO-8859-1"),"UTF-8");
System.out.println(text);
注意:⾃从Tomcat5.x开始,GET和POST⽅法提交的信息,tomcat采⽤了不同的⽅式来处理编码。对于POST请求,Tomcat会仍然使⽤request.setCharacterEncoding()⽅法所设置的编码来处理,如果未设置,则使⽤默认编码⽅式进⾏编码(解码)。⽽GET请求则不
同,Tomcat对于GET请求并不会考虑使⽤request.setCharacterEncoding()⽅法设置的编码,⽽会使⽤tamcat默认编码⽅式进⾏解码(解码)。
web浏览器发送响应(response)
五四青年节演讲稿励志get和post⽅式:response如果没有显式设置,tomcat⼜没有响应配置的话,不管request的编码是什么,response的编码就是ISO-8859-1。
孙悟空的性格特征ajax⽅式:使⽤的是sponseText来进⾏获取信息,也就是说,也是需要使⽤到response的编码格式的。ajax不会再对该编码格式进⾏任何修改。只是接受⽽已。
其他:
jsp页⾯中的设定编码优先级:response.setCharacterEncoding--->contentType--->pageEncoding 层层覆盖 。
可缺省编码设置:pageEncoding--->contentType--->meta 默认缺省。pageEncoding写了后⾯的都可以不⽤写,默认继承。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论