zoukankan      html  css  js  c++  java
  • Eclipse项目中乱码问题的解决办法

    一、产生的原因:

      1、Http协议进行通信的时候是基于请求和响应的,传输的内容我们称之为报文!

      2、Http协议会按照一定的规则将报文编码,然后在读取的时候再使用响应的解码格式进行解码!

      3、这个一定的规则指的就是字符集:ASCII,iso8859-1,gbk,gb2312,utf-8

      4、编码:将字符按照字符集转化为二进制格式

      5、解码:将二进制代码按照响应的字符集转化为字符!


      乱码的根本原因:就是编码和解码指定的字符集不一致造成的!

    二、字符集:

      1、ASCII字符集:美国信息交换标准代码,,单字节编码,主要用于显示现代英语

      2、ISO8859-1字符集:单字节编码,ISO-8859-1收录的字符除ASCII收录的字符外,还包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号

      3、GB2312字符集:中国国家标准简体中文字符集,收录常用汉字

      4、GBK字符集:汉字内码扩展规范,向下兼容GB2312,兼容Unicode 编码,GBK是采用单双字节变长编码

      5、UTF-8:是一种针对Unicode的可变长度字符编码,又称万国码,用在网页上可以统一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。

    三、解决办法:

      1、请求报文:
        浏览器编码---------->服务器解码

          浏览器是按照给定页面的编码格式进行编码的,所以只需要设置网页的编码格式为utf-8就可以了!

        get请求

        解码:使用的是tomcat默认的解码格式,默认是iso8859-1;

         针对Get方式的乱码问题,由于参数是通过URL传递的,所以通过request设置的编码格式是不起作用的,此时可以在每次发生请求之前对URL进行编码:

          例如:Location.href="/encodeURI"("http://localhost/test/s?name=中文&sex=女");

         更简便的方法,那就是在服务器端配置URL编码格式:

           我们在server.xml文件中设置:

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

       
     post请求

        解码:使用的是tomcat默认的解码格式,默认是iso8859-1;

          在服务器端我们使用的是:req.setCharacterEncoding("utf-8");来设置解码格式

        注意:req.setCharacterEncoding("utf-8")一定要设置在第一次获取请求参数之前!


      2、响应编码
        服务器编码------------->浏览器解码

          1)第一种解决方案:

            resp.setCharacterEncoding("utf-8");

            resp.setHeader("Content-Type", "text/html;charset=utf-8");

          2)第二种解决方案:

            resp.setHeader("Content-Type", "text/html;charset=utf-8");

          3)第三种方案:

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

    Content-Type
      用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件
    CharacterEncoding
      作用是设置对客户端请求进行重新编码的编码

    也就是说一个是设置读,一个是设置取
  • 相关阅读:
    codevs 2149 矩形周长
    codevs 3044 矩形面积求并
    codevs 1293 送给圣诞夜的极光
    codevs 2806 红与黑
    codevs 1536 海战
    codevs 1262 不要把球传我
    codevs 2606 约数和问题
    BZOJ 2301 problem b
    BZOJ 3994 约数个数和
    codevs 1173 最优贸易
  • 原文地址:https://www.cnblogs.com/java-zmj/p/7839152.html
Copyright © 2011-2022 走看看