美文网首页
Servlet接收参数---乱码

Servlet接收参数---乱码

作者: 轻云绿原 | 来源:发表于2020-05-12 17:22 被阅读0次

    总的来说就是就是前后端的编码格式不统一

    1:请求的是"utf-8"格式

    <meta charset="UTF-8">
    

    2:但接收是乱码取出来时是乱码

    那就是idea的默认编码不是"utf-8" 的
    在取出参数前要设置一下编码格式

    req.setCharacterEncoding("utf-8");
    

    这样取出来的就不会是乱码。但这只对请求体里有效,文档是这样描述的

    Overrides the name of the character encoding used in the body of this request. This method must be called prior to reading request parameters or reading input using getReader().

    所以这只对POST请示有效,
    GET呢?目前测试,可以直接接收utf-8,但你一定要用其它什么格式来接收,也是可以在以下位置

    • tomcat主目录 >> conf >> server.xml 里的
    <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" URIEncoding="UTF-8"/>
    

    增加

    URIEncoding="UTF-8"
    

    来设置.这个说标识符的编码格式是utf-8

    当然这个要和前端统一,如果前端发过来的是GBK格式的,我们这里也要设置GBK

    • 如果是multipart/form-data格式的话,以上的不起作用。用fileUpload框架来接收数据的话,可以用以下的来调整
    // item是FileItem类型 .解决参数上传乱码问题
    String value = item.getString("utf-8");
    
    /// 解决文件上传乱码问题(文件名)
    ServletFileUpload upload = new ServletFileUpload(factory);
    upload.setHeaderEncoding("utf-8");
    

    3:response返回时也是有这个问题

    如果是纯文本的,用以下的设置

    resp.setContentType("text/plain; charset=UTF-8");
    

    如果是html的,可以直接用以下设置

    resp.setCharacterEncoding("utf-8");
    

    相关文章

      网友评论

          本文标题:Servlet接收参数---乱码

          本文链接:https://www.haomeiwen.com/subject/bdxinhtx.html