servlet (5) 乱码问题

一:传递过程中的乱码

  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数据库的字符编码方式,如 果不设置字符编码方式的话,则插入中文的时候会出现乱码。
 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值