分享

request中的乱码问题

 昵称15242507 2014-08-28
       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 = new String(b);

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多