httpServletRequest.setCharacterEncoding 、httpServletResponse.setCharacterEncoding详解

一、httpServletRequest.setCharacterEncoding():

用来确保发往服务器的参数以汉字的编码来提取,设置从request中取得的值或从数据库中取出的值。

如果没有提前指定,则会按照服务器端默认的“iso-8859-1”来进行编码;

指定后可以通过request.getParameter()获取自己想要的字符串;

该方法只对post请求有效,对get请求无效;对于get请求,应该在server.xml中指定:URIEncoding=utf-8


注意:在执行request.setCharacterEncoding()之前不能执行request.getParameter()方法;

原因:

POST方法提交表示时候,是在执行第一个getParameter()的时候,Java将会按照编码分析所有的提交内容,而后续的getParameter()不再进行分析,所以setCharacterEncoding()无效。

而对于GET方法提交表单时,提交的内容在URL中,一开始就已经按照编码分析提交内容,setCharacterEncoding()自然就无效。

二、httpServletResponse.setCharacterEncoding():

设置HTTP 响应的编码,用于设置服务器给客户端的数据的编码

一般不会用这个方法来设置响应编码,

一般使用response.setContentType()方法来设置HTTP 响应的编码同时指定了浏览器显示的编码;

因为他在执行该方法通知服务器端以指定编码进行编码后,会自动调用response.setCharacterEncoding()方法来通知浏览器以指定编码来解码;

使用此方法要在response.getWriter()执行之前或response提交之前;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值