• 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() 这两个方法不能够同时使用,一次只能使用一个,否则报异常    

  • 相关阅读:
    软件命名的几种常见方式
    软件过程与项目管理第一周作业
    DOS命令大全 系统管理员专用
    数据库事务的作用
    利用C#事务处理对数据库进行多重操作
    JSP标签分页实现
    使用自定义端口连接sql server2008
    Solr4.4.0的安装与配置
    Android中如何使用ViewPager实现类似laucher左右拖动效果
    Android中Timer使用方法
  • 原文地址:https://www.cnblogs.com/Tony100/p/11460965.html
Copyright © 2020-2023  润新知