开发者社区> 问答> 正文

javaWeb项目中如何解决请求乱码的情况?? 400 报错

javaWeb项目中如何解决请求乱码的情况?? 400 报错


展开
收起
爱吃鱼的程序员 2020-06-05 12:48:05 577 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    在Post方式中

     //第一种:对于该方法全局有效

    response.setContentType("text/html;charset=GBK");

    response.setCharacterEncoding("GBK");

    request.setCharacterEncoding("GBK");


    //第二种:只对要转码的特定字符串有效

    String name= request.getParameter("name");

    String encodingString = new String(name.getBytes("ISO-8859-1"),"GBK");

    System.out.println(encodingString); 

     

    //第三种:为该项目配置一个过滤器,对该项目全局有效

    //过滤器请看CharacterEncodeingFilter类 和 web.xml里的配置

    步骤:

    1.编写CharacterEncodeingFilter类(详见例子)

    2.在web.xml中配置该类的servlet信息和初始化信息


    GET方式访问URL时参数的编解码工作:编码/传输/解码

    基本过程:

    public static void main(String args[]){

        String tsptString=”中文”;

        //1.编码(浏览器会按网页的编码方式进行编码)

        String tempString=URLEncoder.encode(tsptString,”GBK”);

        //2.传输

        System.out.println(tempString);

        //3.解码(由Tomcat容器按照默认编码方式自动解码)

        String resultString=URLDecoder.decode(tempString,”ISO-8859-1”);

        //查看

        System.out.println(resultString);

    }

    上面的方式会因为编解码方式的不统一导致乱码,可以通过下面的方式来统一编码方式:

    1.客户端指定网页编码

        a)   页面指定GBK方式: submit.jsp教程 中 <%@ page pageEncoding="GBK"%> ,Servelet中Response.setContentType(“text/html; charset=GBK”);

        b)   浏览器指定GBK方式:在页面上右击->编码->选择新编码->GBK(无法依靠用户为你的页面指定编码,但要预防用户通过这种方法改变你的编码方式

     2.服务端改变编码

       a)   改变Tomcat的默认编码方式:打开tomcat下的conf文件夹下的service.xml查找8080,添加 URIEncoding='GBK',如下: <Connector port="8080" maxThreads="150" … URIEncoding='GBK' />,实例中此时第三步的默认编码方式就变成了GBK

       b)   不使用TOMCAT的默认编码方式在服务器端处理参数,例如在Servlet中

    protected void service(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException {

        String param=arg0.getParameter("param");

        //UTF-8为指定的页面编码方式,ISO-8859-1为TOMCAT的默认解码方式(URIEncoding)

        param =new String(param.getBytes("ISO-8859-1"),"UTF-8");

        System.out.println(param);

        //...

    }

    ######这篇文章总结的很好: http://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/index.html######回复 @季_苗 : ibe的网址,加载慢而已######回复 @季_苗 : 额,为毛我可以打开######你好,这个页面打不开
    2020-06-05 12:48:19
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载