Q1.原page指令<%@ page language="java" import="java.sql.*" pageEncoding="GBK"%>只要加入contentype和charset属性,例如:<%@ page language="java" import="java.sql.*" pageEncoding="GBK" contentType="text/html;charset=GBK"%>就会抛出空指针异常,这是为什么?(缓存问题?RP问题?)Q2.为什么有时候request.setCharacterEncoding(字符类型)这个方法会失效,而只能用:
         String srcbus=request.getParameter("text1");
        byte b[]=srcbus.getBytes("ISO-8859-1");
        srcbus=new String(b);
来进行强制编码,红色这段是把网页的字体编码转换成系统默认的字体编码吗?
以上两个问题反复出现,也就是一会儿Q1的两种写法都不起冲突,一会儿又出现冲突;Q2两种编码方法一会儿都有效,一会儿只有第二种有效,给我的感觉就是被JSP的字符编码给耍了,而不是我耍它们。让我这个徘徊于牛A与牛C之间的人甚是尴尬啊。各位看官给个说法吧~~

解决方案 »

  1.   

    1 你的异常呢? 不要让我们猜
    2 为什么有时候request.setCharacterEncoding(字符类型), 你的字符类型呢? 依然让我们猜啊!?
      

  2.   

    这样写
    String name = new String(request.getParameter("uname").getBytes("ISO8859-1")) ;request.setCharacterEncoding("GBK") ;
      

  3.   

    String srcbus= null;
            srcbus=new String(request.getParameter("text1").getBytes("ISO-8859-1"),"GBK"); 
      

  4.   

    你要是不用GET传中文,就不会有这种编码问题,get上边就不应该传中文,最好传id,然后去服务器重新搜索对应的中文数据。GET方式乱码问题请参考我们的教程:
    http://www.family168.com/tutorial/jsp/html/jsp-ch-02.html#jsp-ch-02-02-03
      

  5.   

    1.中的异常是“JspServletWrapper.handleJspException(Exception)"
    2.感谢xyz20003,他让我注意到我用的是GET方法,这样就知道为什么setCharacterEncoding()”失效,然后在使用GET方法提交的时候没法在Page指令里使用charset,一使用就会报上面1中的异常,所以我的字符类型应该是ISO-8859-1
      

  6.   

    6楼,2中的我的系统默认编码肯定不是ISO-8859-1,说错了,因为自己用srcbus=new String(b)转出来的中文字符正常,所以应该是GB2312或者GBK吧,谁知道怎么得到系统当前字符编码?