servlet (5) 乱码问题

来源:互联网 发布:淘宝卖家违规 编辑:程序博客网 时间:2024/06/08 15:28

一:传递过程中的乱码

  1,原因

   在浏览器向WEB服务器发送中文的时候,浏览器是不能直接发送中文的,浏览器先将中文经过ISO8859-1的字符编码方

式进行预先编码,在网络传输中传送的是编码后的数据,到tomcat服务器之后,tomcat服务器不知道传送过来的是中文,

所以不能正常显示


  2,解决方法:

  1)在java程序中再使用ISO8859-1的字符编码方式进行解码,再采用一种支持中文的字符编码方式对其重新编码

        byte[] bs =sname.getBytes("ISO8859-1");  然后重新编码:sname = new String(bs,"GB18030");

       这种解决方法是通用的,缺点是:开发效率太低,如果浏览器客户端提交的数据多,开发效率会很低。

 

 

  2)从request对象中获取数据前,设置字符编码方式。

       request.setCharacterEncoding("GB18030");

      但是这个代码只对HTTP协议中请求协议中的请求体中的文字进行编码,也就是只能解决post请求中出现的乱码问题,

get请求不能使用这种方式解决。



  3)将tomcat服务器中的CATALINA_HOME/conf/server.xml文件中的connector变迁中添加代码解决get请求中的乱码,


  1. <span style="font-size:18px;">         Connector port="8080"protocol="HTTP/1.1"  
  2.               connectionTimeout="20000"  
  3.                redirectPort="8443"  
  4.          URIEncoding="GB18030"/></span>  



二:数据展示过程中出现乱码

  1,原因

   使用servlet的PrintWriter输出中文到浏览器上出现乱码

          

  2,解决方法

    在方法中添加: response.setContentType("text/html;charset=GB18030");

 

  3,注意问题

   text/html表示响应的内容类型,不能随便写,响应的如果是普通文本或者HTML代码的话必须是text/html,写错了会出现

文件下载提示。

 

三:数据的保存过程中出现乱码

  1,原因

  在保存之前就已经是乱码了,保存到数据库的时候就一定是乱码。

  2,解决

  Oracle数据库在安装的时候会提示我们选择支持语言,我们选择的是中文,因此Oracle安装后是支持中文的。所以保存的

时候只要保存之前的数据不是乱码,保存之后的数据就不会是乱码。但是在MYSQL数据库中,在安装的时候大家需要手动

的设置MYSQL数据库的字符编码方式,如果不设置字符编码方式的话,则插入中文的时候会出现乱码。

0 0
原创粉丝点击