jsp页面request获取中文参数乱码解决办法

在jsp页面通过request请求获取参数code有中文值时,得到的参数会自动过滤掉中文,或者是得到一串乱码,如果是查询页面通过这个参数查询会查不到数据,当使用url传递code参数跳转到另一个页面时得到的也是乱码,那怎么解决乱码问题呢?

在这里插入图片描述如图所示在jsp页面虽然定义了contentType为UTF-8:

<%@ page contentType="text/html; charset=UTF-8" %>

但是实际上页面编码类型还是默认的为:ISO-8859-1,没有改变。

这个时候不得不使用下面这种形式强制转码为utf-8,这个时候才真正为UTF-8格式。

String code = request.getParameter("code");
code=new String(code.getBytes("ISO8859_1"),"utf-8");

当页面使用url传递参数,跳转到另一个jsp页面时,中文时也会乱码,这个时候该如何解决?

1、在jsp页面导入转码包。

<%@ page import="java.net.URLEncoder" %>

2、将code转码后拼接到response.sendRedirect的url上。

code=URLEncoder.encode(code,"UTF-8");

3、在既然转码了还需要解码,在接收页面,导入解码包。

<%@ page import="java.net.URLDecoder" %>

4、解码从上一个页面传过来的中文参数。

String code = URLDecoder.decode(request.getParameter("code"), "UTF-8");

5、最后得到了显示正常的中文参数。

以上修改在google浏览器是完全可以的,本来以为完美解决了问题,但是在ie浏览器又不行了,得到的还是乱码,怎么办?

通过调试后发现在使用ie浏览器时,在发送参数页面转码后的参数在接收页面还是乱码,不妨在原来基础上再给它转一次码,也就是转两次码,得到的是转码两次的参数,再通过url拼接跳转另一个页面,这个时候在接收页面接收到的就是正常的中文参数了。

code=URLEncoder.encode(URLEncoder.encode(code,"UTF-8"),"UTF-8");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值