最近学JSP的tag文件部分,在实际操作的时候发现个问题
<%@ page contentType="text/html;charset=gb2312"%>

<%@ page contentType="text/html;Charset=gb2312"%>
不知道大家看出这两个的区别没有。就是charset的首字母是否大写。当首字母小写的时候,如果tag文件中没有设置编码 ,那么jsp引用tag文件中的中文会显示乱码。
当charset首字母大写的时候,即使tag文件没有设置编码,那么,中文同样可以显示。还有一种情况,当我在jsp页面格式化日期的时候,输出
"yyyy-MM-dd hh:mm:ss(E)"
在输出的时候  如果charset的首字母大写,星期的地方就会乱码
如果小写,可以正常显示星期。求各位高手指导~~这是怎么个原理啊

解决方案 »

  1.   

    java规范的问题
      charset的时候 编译器能读起到这个属性,并对页面做编码处理,大写的时候编译器不知道这是什么,就不对页面做什么处理了
      

  2.   


    <%@ page pageEncoding="GBK" contentType="text/html;charset=GBK"%>
      

  3.   

    一般采用UTF-8,GB2312我也产生过乱码,改成UTF-8就好了,编码问题,和大小写没关系
      

  4.   

    一)当使用request对象获取客户端提交的汉字字符时,会出现乱码问题,所以对含有汉字符的信息必须进行特殊的处理。使用request对象的JSP页面可以使用两种方式避免出现汉字乱码问题:一种方式使用page指定contentType属性的值时,做如下指定<%@page contentType="text/html;Charset="GB2312"%>即将其中出现的Charset中的首写字母C大写。这时通过request对象直接取值即可。另一种方式把c小写如下:<%@page contentType="text/html;charset="GB2312"%>这时需要将通过内置对象request获取的信息重新编码一次,即用ISO-8859-1进行编码一次,放入字节数组中,然后转换成字符串即可。String str=request.getParameter("message");byte b[] = str.getBytes("ISO-8859-1");str = new String(b);编码总结:(1)对于采用gb2312或utf-8等编码的页面进行传送参数时,接收页面,采用大写Charset时采用对应编码时不需转换编码,即可。但是对于utf-8编码的只能采用上述大写Charset方式,对于gb2312传送的,可以接收页面可以采用charset,不过这时需要重新采用iso-8859-1编码。(2)因此简单起见,接受参数的页面设置直接都设置成大写Charset。二)采用utf-8编码submit.jsp<%@ page contentType="text/html;charset=utf-8" %>
    <html>
    <head>
    <title>本页面采用charset=utf-8</title>
    </head>
    <body>
    <form action="charset.jsp" method="post">
    <input type="text" name="boy"><input type="submit" value="提交给charset.jsp" name="submit">
    </form>
    <form action="Charsetd.jsp" method="post">
    <input type="text" name="boy"><input type="submit" value="提交给Charsetd.jsp" name="submit">
    </form>
    </body>
    </html>Charsetd.jsp页面,采用大写Charset,显示为正常,不需中间转码<%@ page contentType="text/html; Charset=utf-8" %>
    <html>
    <head>
    <title>正常显示,但是如果Charset写成charset--C小写,则获得参数为乱码。即使使用utf-8重新编码也为乱码</title>
    </head>
    <body>
    <%=request.getParameter("boy")%><br>
    <%=request.getParameter("submit")%>
    </body>
    </html>charset.jsp 本页面采用小写charset,全显示为乱码<%@ page contentType="text/html; charset=utf-8" %>
    <html>
    <head>
    <title>本页面采用charset小写,从新编码,但全为乱码</title>
    </head>
    <body>
    <%String boy = request.getParameter("boy");
    String submit = request.getParameter("submit");
    byte b[] = boy.getBytes("utf-8");
    String st1 = new String(b);
    out.println("boy "+st1+" "+new String(st1.getBytes("ISO-8859-1")));
    out.println(boy+" "+submit);
    out.println("boy "+new String(b));
    b = submit.getBytes("ISO-8859-1");
    String st2 = new String(b);
    out.println("submit"+st2+" "+new String(st2.getBytes("utf-8")));
    %>
    </body>
    </html>三)采用gb2312编码1.submit.jsp<%@ page contentType="text/html;charset=gb2312" %>
    <html>
    <head>
    <title>本页面采用charset=gb2312</title>
    </head>
    <body>
    <form action="charset.jsp" method="post">
    <input type="text" name="boy"><input type="submit" value="提交给charset.jsp" name="submit">
    </form>
    <form action="Charsetd.jsp" method="post">
    <input type="text" name="boy"><input type="submit" value="提交给Charsetd.jsp" name="submit">
    </form>
    </body>
    </html>2.Charset.jsp<%@ page contentType="text/html; Charset=gb2312" %>
    <html>
    <head>
    <title>本页面采用大写Charset设置,正常显示,若采用小写charset则为乱码</title>
    </head>
    <body>
    <%=request.getParameter("boy")%><br>
    <%=request.getParameter("submit")%>
    </body>
    </html>
    3.charset.jsp<%@ page contentType="text/html; charset=utf-8" %>
    <html>
    <head>
    <title>本页面采用charset小写,ISO-8859-1从新编码后正常显示</title>
    </head>
    <body>
    <%String boy = request.getParameter("boy");
    String submit = request.getParameter("submit");
    byte b[] = boy.getBytes("ISO-8859-1");
    String st1 = new String(b);
    out.println("boy "+st1);
    b = submit.getBytes("ISO-8859-1");
    String st2 = new String(b);
    out.println("submit "+st2);
    %>
    </body>
    </html>
      

  5.   

    不多说了,还是写个代码给你看的明白
     public class page子类(){
      private charset;
      set,get;
       page子类(){
        charset=“一个默认的编码”
       }
      page子类(String src){
       charset=src
    }
     public String  bianyu(String s){
       String restring;
       if(!charset=""){
       restring=new String(s.getBytes(charset))
      }else{
       restring=s
      } 
      return restring;
    }
    }}
      

  6.   

    <%@ page contentType="text/html;charset=GBK"%>
      

  7.   

    项目编码最好全程使用utf-8编码!而且html 不区分大小写的,JSP区分!
      

  8.   

    小写是正确的,大写servlet不认
      

  9.   


    规定是小写吧。JAVA区分这个大小写的。
      

  10.   

    这个大小写无所谓的,还有encoding 与 charset 最好是utf8