JSP中request中文乱码问题

由于在JSP中默认的编码格式是ISO-8859-1,也就是request.getParameter("username");都是按照ISO-8859-1的编码格式来的。就算你把charset与pageEncoding设置成了UTF-8也不起作用的。如:

    String username = request.getParameter("username");
    //String username = new String(request.getParameter("username").getBytes("ISO-8859-1"), "UTF-8");
    String password = request.getParameter("password");
    Integer age = Integer.parseInt(request.getParameter("age"));
    String sex = request.getParameter("sex");

    //System.out.println(new String(sex.getBytes("ISO-8859-1"), "UTF-8"));
    System.out.println("username=" + username + "sex=" + sex);

在上这个JSP中,处理客户端传递过来的参数username与sex时,如果username为中文,那么此时的username这个字符串会出现乱码的情况,sex字段同理。解决方案:

方案一:

所有的request.getParameter();之前加上:request.setCharacterEncoding("UTF-8");
特别注意:一定是所有的request.getParameter();之前,比如:

    Integer age = Integer.parseInt(request.getParameter("age"));
    request.setCharacterEncoding("UTF-8");
    String sex = request.getParameter("sex");

虽然age不会是中文,然后你在age字段的下面加上request.setCharacterEncoding("UTF-8");这个时候是不会起作用的。sex还是会出现乱码。正确示范:

    request.setCharacterEncoding("UTF-8");
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    Integer age = Integer.parseInt(request.getParameter("age"));
    String sex = request.getParameter("sex");

方案二:

先根据原来的ISO-8859-1的编码方式解码之后,再重新编码。比方案一繁琐,不推荐。

a)

String username = request.getParameter("username");
byte[] bytes = username.getBytes("ISO-8859-1");
username= new String(bytes,"UTF-8");

b)

String username = new String(request.getParameter("username").getBytes("ISO-8859-1"), "UTF-8");
String sex = new String(request.getParameter("sex").getBytes("ISO-8859-1"), "UTF-8");

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值