setCharacterEncoding 之前 如果 getParameter 之后就会一直乱码

setCharacterEncoding 之前 如果 getParameter 之后就会一直乱码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        String catgoryName = request.getParameter("catgoryName");
        System.out.println("catgoryName = "+catgoryName);
         
        request.setCharacterEncoding("UTF-8");
         
        catgoryName = request.getParameter("catgoryName");
        System.out.println("EncodeFilter catgoryName = "+catgoryName); //乱码
 
 
//========================================================================================
 
        //String catgoryName = request.getParameter("catgoryName");
        //System.out.println("catgoryName = "+catgoryName);
         
        request.setCharacterEncoding("UTF-8");
         
        String catgoryName = request.getParameter("catgoryName");
        System.out.println("EncodeFilter catgoryName = "+catgoryName); //正常显示汉字


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好。request.setCharacterEncoding():是设置从request中取得的值或从数据库中取出的值的编码方式。setCharacterEncoding指定后可以通过getParameter()则直接获得正确的字符串,如果不指定,则默认使用iso8859-1编码。所以同学在指定编码之前获取到的会是乱码。

如果还有疑问,可以继续提问。如果解答了同学的疑问,望采纳~

祝学习愉快~


  • enjava 提问者 #1
    这个我知道,问题是, 在设置 setCharacterEncoding 之前,如果执行过 getParameter() 操作,即便后面 设置了正确的编码 setCharacterEncoding 操作, 再获取 getParameter() 还是乱码
    2019-04-02 10:42:31
  • 芝芝兰兰 回复 提问者 enjava #2
    在执行request.setCharacterEncoding()之前不能执行request.getParameter()方法。在执行第一个getParameter()的时候,将会按照默认iso8859-1编码分析所有的提交内容,而后续的getParameter()不再进行分析,所以setCharacterEncoding()无效。
    2019-04-02 11:50:07
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10204    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码