【jsp】Servlet中请求乱码的问题

       在项目开发中,很多时候我们都会遇到请求servlet出现中文乱码的问题,最近简单整理了请求乱码的一些情况以及处理方法,希望对大家有所帮助。

情况1:post方法提交请求出现中文乱码

       这种情况处理起来比较简单,在jsp页面中我们使用ContentType("text/html;charset=编码方式")指定了页面的编码,所以在servlet中我们只需使用request.setCharacterEncoding("编码方式")设置编码,就可以处理中文乱码的问题了。

情况2:get方法提交请求出现中文乱码

       这种情况使用request.setCharacterEncoding("编码方式")是无效的,由于get方法的请求数据是附在URL中的,服务器会使用ISO-8859-1进行解码,所以在处理中文乱码的问题时,需要进行编码转换,通过使用String的getByte()方法。例子如下:

String name=request.getParameter("name");
byte[] str = name.getBytes("ISO-8859-1");
name =new String(str,"utf-8");

情况3:action附加参数出现乱码问题

       有些人会在action后面附在参数,如action="UserServlet?function=登录验证",这个时候使用的请求提交方法是post,即使是post方法,使用request.setCharacterEncoding("编码方式")设置编码后,function值的乱码依然不能解决,这是因为使用该方式提交参数,跟使用get方法提交参数是一样的,function的值会附在URL里,所以想要获得action中附在的参数,需要使用String的getByte()方法进行编码转换,当然表单中的其他参数仍然可以通过request.setCharacterEncoding("编码方式")处理乱码。

       为了避免不必要的麻烦,建议大家尽量不在action中附加参数,如果想要传递某些隐式参数,可以使用隐藏域

<input type="hidden" name="function" value="登录验证"/>

Author:立礼

Sign:人生不要有太多的幻想,而要有更多的行动。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值