我做了一个站内搜索,用的是mysql数据库.当在关键字文本框中输入字符的时候可以查询出结果,输入中文的时候却查不出来.我输入了sql语句,在数据库查询可以得到结果,请问如何解决

解决方案 »

  1.   

    text中的变量传递给sql的时候是否正确.
      

  2.   

    典型编码问题,text框传出来的是ISO-8859-1的编码,到SQL里要给它重新以GBK编码String string=new String(tempString.getBytes("ISO-8859-1"),"GBK");
      

  3.   

    可能传入到数据库查询的中文是乱码,你输出sql语句看下
      

  4.   

    要把SQL的WHERE拼成这样才能查出来
    function searchStr()
    {
    var s1="infoName";
    var s2="infoId";
    var s3="str2";
    var s4="infoType";
    var s5="infoDescription";
    var s6="infoValue";
    var final="groupinnerid='<%=id%>'";
    var str="";

    if(document.all[s1].value!="")
    {
    str = s1 +" like '%"+ document.all[s1].value + "%'" + " and ";
    }
    if(document.all[s2].value!="")
    {
    str = str  +s2 +" like '%" + document.all[s2].value + "%'" +  " and ";
    }
    if(document.all[s3].value!="")
    {
    str = str  +s3 +" like '%" + document.all[s3].value + "%'" +  " and ";
    }
    if(document.all[s4].value!="")
    {
    str = str  +s4 +" like '%" + document.all[s4].value + "%'" +  " and ";
    }
    if(document.all[s5].value!="")
    {
    str = str +s5 +" like '%" + document.all[s5].value + "%'" +  " and ";
    }
    if(document.all[s6].value!="")
    {
    str = str  +s6 +" like '%" + document.all[s6].value + "%'" +  " and ";
    }
    str=str+final; //alert(str);
    document.all["whereStr"].value=str;
    document.all["currentPage"].value="1";
    document.forms[0].action="ListDeployinfo.jsp";
    document.forms[0].submit();
    }
      

  5.   

    哇 楼上的testejbzdx() (  
    比我快6秒哦
    csdn
    一个字
      

  6.   

    把search的sql语句打出来看看,是不是编码问题,   
      

  7.   

    代码 发出来看看  只要FROM表单 和 SQL语句那部分
      

  8.   

    以下是我表单提交代码:<body bgcolor="#ffffff"  onLoad="setup()">
    <form name="form1" method="post" action="companyAction.do?method=find">
    <select id=s1 name=s>
           <option selected>省份</option>
      </select>
    &nbsp;
        <select id=s2 name=sh>
          <option  selected>地级市</option>
        </select>
      &nbsp;
    关键字
    <input type="text" name="cotypeSY">   //cotypeSY是"关键"字段
    <input type="submit" name="Submit" value="提交">
    <input type="hidden" name="temp" value="0">
    </form>
    </body>sql语句代码:String ipage = request.getParameter("page");
    String where = "";
    if(request.getParameter("page") == null || request.getParameter("page").length() <= 0){
    ipage = "1";
    }
    if(cotypeSY != null && cotypeSY.length() >0 ){
    where += " where cotypeSY like '%" + cotypeSY + "%' ";
    }

    //System.out.println(sh);
    if(sh != null && sh.length() > 0 && (!"地级市".equals(sh))){
    if(where.length() <= 0){
    where = " where province ='" + sh +"'";
    }else{
    where += " and province ='" + sh +"'";
    }
    }

    String sql = "(select coname,homePage,lxr,fax,cotype,mob,tel,address,enid from copay " + where + " order by clickless desc limit 10000)" + 
    "union all"+ 
    "(select coname,homePage,lxr,fax,cotype,mob,tel,address,enid from 40bigroad1 " + where +")";
    System.out.println(sql);我把sql语句打印出来,在查询分析器中能正确的显示
      

  9.   

    应该还是编码问题,要看你的mysql用的是什么编码,一般来说只要用什么编码写入数据库的还用什么编码去查就能查出来.
      

  10.   

    数据是用程序写入的吗?写入时做字符转换没,用system.out.println()看一下是乱码还是汉字,要是汉字查的时候也把sql语句system.out.println()一下看是乱码还是汉字
      

  11.   

    所有的JSP页面都改为了gb2312无论怎么查system.out.println()输出的结果都是汉字。
    最有意思的是我在家试验好使,到公司就不好使了 !!郁闷啊 !!!