首页 > 其他 > 详细

servlet (5) 乱码问题

时间:2014-03-01 17:47:21      阅读:481      评论:0      收藏:0      [点我收藏+]

一:传递过程中的乱码

  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请求中的乱码,
         Connector port="8080"protocol="HTTP/1.1"
              connectionTimeout="20000"
               redirectPort="8443"
         URIEncoding="GB18030"/>


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

  1,原因

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

  2,解决方法

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

  3,注意问题

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

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

  1,原因

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

  2,解决

  Oracle数据库在安装的时候会提示我们选择支持语言,我们选择的是中文,因此Oracle安装后是支持中文的。所以保
时候只要保存之前的数据不是乱码,保存之后的数据就不会是乱码。但是在MYSQL数据库中,在安装的时候大家需要手动
的设置MYSQL数据库的字符编码方式,如果不设置字符编码方式的话,则插入中文的时候会出现乱码。
 

servlet (5) 乱码问题,布布扣,bubuko.com

servlet (5) 乱码问题

原文:http://blog.csdn.net/lishuangzhe7047/article/details/20159673

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!