解决request中文乱码的问题

解决request中文乱码的问题

 

request.setCharacterEncoding(charset);必须写在第一次使用request.getParameter

()之前,

 这样才能保证参数是按照已经设置的字符编码来获取。

 

response.setCharacterEncoding(charset);必须写在PrintWriter out =

request.getWriter()之前,

 这样才能保证out按照已经设置的字符编码来进行字符输出。

 

通过过滤器,我们可以保证在Servlet或JSP执行之前就设置好了请求和响应的字符编码

 

 

 

但是这样并不能完全解决中文乱码问题:

 

对于post请求,无论是“获取参数环节”还是“输出环节"都是没问题的;

 

对于get请求,"输出环节"没有问题,但是"获取参数环节"依然出现中文乱码,所以在输

出时直接将乱码输出了。

 

 

 

原因是post请求和get请求存放参数位置是不同的:

 

post方式参数存放在请求数据包的消息体中。get方式参数存放在请求数据包的请求行的

URI字段中,

 以?开始以param=value&parame2=value2的形式附加在URI字段之后。而

request.setCharacterEncoding(charset);

 只对消息体中的数据起作用,对于URI字段中的参数不起作用。

 

当使用request.setCharacterEncoding(charset);时,只能解决表单方法为POST的中文

乱码情况,而方法为GET的依然为乱码。

 

解决GET乱码:

 

String str =request.getParameter("URL后面的变量名");

 

byte b[] =str.getBytes("ISO-8859-1");

 

str = newString(b);

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值