我在站内搜索时,输入中文关键字,什么都搜索不到,但是输入的时英文的时候,就可以搜索出相关帖子,这是为什么?是因为表单输入的中文关键字和数据库里的中文,编码不一样吗?
 表单name就叫searchcontent
String searchcontent = request.getParameter("searchcontent");
我如果写成
String searchcontent = new String(request.getParameter("searchcontent").getBytes("ISO-8859-1"));就会出现java.lang.NullPointerException
at org.apache.jsp.main_jsp._jspService(main_jsp.java:92)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:204)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
高手请指教。

解决方案 »

  1.   

    怎么没人回答我呢? 晕   上面的问题已经解决了,但是又有新的问题了,为什么我用汉字注册的时候,总是会提示error:java.lang.IllegalArgumentException,用英文不会哦,高手能否给解决下?
      

  2.   

    error:java.lang.IllegalArgumentException非法变量声明?把相关代码弄出来把
      

  3.   

    debug跟踪一下
    贴出问题代码
      

  4.   

    这当然还是你没有把汉字做ISO to GBK的处理,给你一个方法:
        public static String iso2gb(String str) {
            if (str != null) {
              byte[] tmpbyte = null;
              try {
                tmpbyte = str.getBytes("ISO8859_1");
              }
              catch (Exception e) {
                System.out.println("Error: Method: dbconn.iso2gb :" + e.getMessage());
              }
              try {
                str = new String(tmpbyte, "GBK");
              }
              catch (Exception e) {
                System.out.println("Error: Method: dbconn.gb2iso :" + e.getMessage());
              }
            }
            return str;
          }
      

  5.   

    str = new String(str.getBytes("iso8859-1"), "GBK");
      

  6.   

    在页面上加入<%request.setCharacterEncoding("GBK");%>
      

  7.   

    request.setCharacterEncoding("GBK")
    可以加在servlet里 或者是JSP文件里 然后再用
    request.getParameter("") 应该就不会出问题了