zoukankan      html  css  js  c++  java
  • Servlet转码问题

    HttpServletRequest获取页面数据

    提交表单时,Servlet直接从页面通过HttpServletRequest对象的getParameter(String arg0)获取参数时

    默认编码解码方式为iso8859-1,而浏览器会对中文参数值进行编码(会使用表单所在页面时的字符集编码);

    编码和解码方式不一致时就会出现乱码。解决方式:

    一般页面的编码集为utf-8(注意页面使用的编码集),所以在服务端采用这种方式解码就行了;

    但是由于请求方式不同有不同解决方法:

    1.get的请求方式时:

      可以在tomcat的配置文件server.xml中配置的节点添加(加粗部分)

    <Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

    2.post的请求方式时:

      需要直接在获取参数之前设置解码方式

    request.setCharacterEncoding("utf-8");

    3.两种情况都适用的方法(麻烦、不适用)

      就是按默认解码方式获取的数据取得后,再自己写代码去解码再编码,但是每个会乱码的参数都需要,所以很麻烦

    byte[] bs = user.getBytes("iso8859-1");
    user = new String(bs,"utf-8");

    HttpServletResponse返回数据

    可以在返回数据前设置,通知容器使用指定的字符集

    response.setContentType("text/html;charset=utf-8");

    或者单独设置

    response.setCharacterEncoding("utf-8");

    注册博客园已经半年了,看了很多大神的文章,也解决了不少问题,很多次想写下自己的第一篇博客,但是一直很忐忑

    没有一次开始,今天终于下定决心,虽然写的很简单,也不够清晰的感觉,但是走出了自己的第一步,希望自己能够在这条路走得更远。

  • 相关阅读:
    黄聪:Visual Studio快速封装字段方法
    黄聪:在vs2008中设置jquery智能提示
    黄聪:Linq初级班 Linq to DataSet体验(单表、多表联合查询JOIN语法)
    mysql分区
    为什么使用框架
    阅读杂记(RSA,PDO)
    Golang之继承模拟
    php中$_REQUEST一个注意点
    记录mysql性能查询过程
    知识杂记
  • 原文地址:https://www.cnblogs.com/ZqNote/p/5863565.html
Copyright © 2011-2022 走看看