• servlet编码问题


    servlet编码问题

    在获取中文的请求参数时,可能会出现乱码问题(和请求方式、tomcat服务器版本有关),具体可以分为以下三种情况:

    1. 如果请求是GET提交,并且tomcat是8.0及以后的版本,GET提交的中文参数,在获取时不会出现乱码问题!(8.0以后的tomcat包括8.0在获取GET提交的中文参数时,已经处理中文乱码问题。)
    2. 如果请求是POST提交,不管是哪个版本的tomcat服务器,在获取中文参数时,都会出现乱码问题。因为tomcat底层在接收POST提交的参数时,默认会使用iso8859-1编码接收,而这个编码中没有中文字符,所以在接收中文参数时,一定会出现中文乱码问题!

    post提交乱码解决方案:

    request.setCharacterEncoding("utf-8");
    

    注意:这行代码不会影响GET提交,只对POST提交有效!这行代码要放在任何获取参数的代码之前执行!

    get提交乱码解决方案:

    如果请求是GET提交,并且tomcat是7.0及以前的版本,GET提交的中文参数,在获取时会出现乱码问题!

    [tomcat安装目录]/ conf/server.xml文件的(修改端口的)Connector标签上,添加一个 URIEncoding="utf-8" 属性,如下:

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

    同时在[Eclipse]/Servers/[当前tomcat服务器对应的配置目录]/server.xml文件中,在Connector标签上,添加一个 URIEncoding="utf-8" 属性,同上!(idea可省略这一步)

    其他乱码解决

    1. pageEncoding=”UTF-8”的作用是设置JSP编译成Servlet时使用的编码。(在jsp文件中使用)

    2. contentType=”text/html;charset=UTF-8”的作用是指定服务器响应给浏览器的编码。(jsp中使用)

    3. request.setCharacterEncoding(“UTF-8”)的作用是设置对客户端请求和数据库取值时的编码,不指定的话使用iso-8859-1。(只解决POST乱码)

      // 解决GET乱码可以修改tomcat的server.xml中的 URIEncoding属性 
      // 或使用 
      str = new String(str.getBytes("iso-8859-1"),"utf-8"); 
      
    4. response.setCharacterEncoding(“UTF-8”)的作用是指定服务器响应给浏览器的编码。

    5. response.setContentType(“text/html;charset=utf-8”)的作用是指定服务器响应给浏览器的编码。同时,浏览器也是根据这个参数来对其接收到的数据进行重新编码(或者称为解码)。

  • 相关阅读:
    Ubuntu下UFW防火墙简单设置
    ubuntu设置tomcat开机自动启动
    ubuntu16.04编辑器vi的使用
    Several ports (8005, 8080, 8009) required
    JavaScript检测浏览器(Firefox、IE)是否安装指定插件
    mongo 初级使用
    @Scheduled(cron = "0 0 * * * ?")实现定时任务
    Calendar时间类型数据设置
    Maven+STS工程中Maven Dependencies 文件夹丢失问题
    redis安装以及远程连接
  • 原文地址:https://www.cnblogs.com/zpKang/p/13099776.html
Copyright © 2020-2023  润新知