zoukankan      html  css  js  c++  java
  • JavaWeb servlet,乱码的原因和解决

    请求为什么会有乱码?

      答:当表单提交时,浏览器对中文参数值进行编码(使用打开表单所在的页面时的字符集进行编码,web服务器在默认情况下会使用iso-8859-1去解码,编码和解码方式不一致,就会产生乱码。

    解决方案:request.setCharacterEncoding("UTF-8");对于get 还要在tomcat服务器目录下的conf文件夹下找到server.xml文件,打开进行如下配置

    如何查看页面的字符集编码方式?

    图中红框内就表示表单所在的页面的字符集,此时因为表单的字符集是iso-8859-1所以服务器就不用设置解码方式,中文依然不会乱码。

    response响应回浏览器出现中文乱码?

      getOutputStream();:

        使用该字节输出流,不能直接输出中文,会出异常,要想输出中文,解决方法如下

        解决:getOutputStream().write(xxx.getBytes("UTF-8"));  //手动将中文用UTF-8码表编码,变成字节传输,变成字节后,就不会报异常,并且tomcat也不会在编码,因为已经编码过了,所以到浏览器后,

                                    如果浏览器使用的是UTF-8码表解码,那么就不会出现中文乱码,反之则出现中文乱码,所以这个方法,不能完全保证中文不乱码

      getWrite();:

        使用字符输出流,能直接输出中文,不会出异常,但是会出现乱码。

        解决:通知tomcat和浏览器使用同一张码表。

        response.setContentType("text/html;charset=utf-8");  //通知浏览器使用UTF-8解码 

        通知tomcat和浏览器使用UTF-8编码和解码。这个方法的底层原理是这句话:response.setHeader("contentType","text/html;charset=utf-8"); 

      注意:getOutputStream()和getWrite() 这两个方法不能够同时使用,一次只能使用一个,否则报异常    

  • 相关阅读:
    python2(跳脱字节、字符类型:字符串、boolean)
    php like模糊查询详解 '%value%'
    php mysql distinct关键字的用法
    php mysql 基础的增删改查操作
    for循环 求数组平均数和总数
    for()循环关联数组
    找出数组中的最大值及其索引
    php 2种常用定义数组的用法
    php 使用字符串函数取出数组中的图片名
    php 使用魔术变量加载文件 __DIR__
  • 原文地址:https://www.cnblogs.com/Tony100/p/11460965.html
Copyright © 2011-2022 走看看