JSP中文问题总结



中文问题总结
1、页面html静态部分乱码,比如表单的名字
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
   加在<html><head>之间
2、页面JSP动态部分乱码
  <%@ page contentType="text/html; charset=gb2312" language="java">
3、URL参数接收中文乱码
  接收servlet中加入request.setCharacterEncoding("gb2312");需要在读请求参数和读getReader()的input之前调用。
4、MySql数据库操作乱码
  连接数据库的URL中添加useUnicode=true&characterEncoding=GB2312:
   jdbc:mysql://host/databaseName?useUnicode=true&characterEncoding=GB2312"
  建表时指定编码
  页面和servlet中的遵守1、2条,提交数据库处理之前遵守3条。
5、servlet转发时乱码
  在servlet中显示乱码或者转发后显示乱码需要在操作之前调用:
  response.setContentType("text/html; charset=GBK");
  同时在JSP页面中遵守1、2两条。
6、转码方法,对请求参数或写入数据库的数据进行中文转码,在需要时调用。
  public static String toChinese(String conStr)
    {
          try{
              if(conStr==null)
                 return null;
              else
              {
                 conStr = new String(conStr.getBytes("ISO8859_1"), "GBK");
                 return conStr;
             }
          }catch(Exception e){
                return null;
          }
    }
7、更改tomcat的server.xml使在get方法时URL中的中文也用gbk编码。
  如果你发现在上述的方法在form中submit方法为get时,通过URL传给服务器的中文还是不能正常显示,而post方法却可以通过以上介绍的方法来进行编码转换,这种情况可能在tomcat4中并不会有,而在tomcat5中却有,这是因为tomcat4和tomcat5对QueryString(get方法)和post方法的编码处理不一样所致,tomcat4中post和QueryString是一样的编码方法,如果不显式指定则默认为iso-8859-1,而tomcat5中却是post默认是iso-8859-1,QueryString默认为%??的形式而不是iso-8859-1。
  故需要显示制定QueryString的编码方式,在TOMCAT_HOME/conf/server.xml中找到<Connector />区块,设定这两个参数之一。
  URIEncoding:指定QueryString的编码
  useBodyEncodingForURI:true时指定URIEncoding编码与post一样,false则相反。
  原文出处在tomcat的文档中: http://localhost/tomcat-docs/config/printer/http.html但是这个文档的说明是有问题的,他说URIEncoding在默认是用iso-8859-1编码的,其实并非如此。有牛人研究tomcat源码得出的结论。
  示例:  
   <Connector
   debug="0"
   acceptCount="100"
   connectionTimeout="20000"
   disableUploadTimeout="true"
   port="80"redirectPort="8443"
   enableLookups="false"
   minSpareThreads="25"
   maxSpareThreads="75"
   maxThreads="150"
   maxPostSize="0"
   URIEncoding="ISO-8859-1">
   </Connector>
引用: http://www.javaworld.com.tw/jute/post/view?bid=9&id=44042&sty=3&age=0&tpg=1&ppg=1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值