用mysql进行查询的时候,如果查询条件是中文的话就得不到结果例如表SchoolName     Sheng    
北京大学       北京
清华大学       北京
北京大学       bj
清华大学       bj执行查询
select * from 表名 where Sheng='北京'得不到查询结果。
如果改为
select * from 表名 where Sheng='bj'就能得到查询结果。这是什么问题啊? 上网查了下也有人遇到这种情况,可没有讲清楚如何解决?
有知道的吗? 给帮忙解决下。 谢了

解决方案 »

  1.   

    估计sql是乱码了吧,或者你在前后加上%来试试吧,先排除有空格这些符号的原因
      

  2.   

    创建数据库的时候,编码设置的是utf-8;
    我打印sql语句不是乱码,正常的;
    进行like '%%'也不行;
      

  3.   

    你的项目是什么编码的?看看你的sql是啥编码格式的。有可能是GBK的
      

  4.   

    show create table 表名;看一下你所查字段的编码是什么编码
      

  5.   

    好,问题解决。下面把解决方法跟大家分享:
    如果你没有修改数据库默认字符编码集,而你的项目中用的是其他的编码格式,我用的是utf-8,这里以utf-8编码格式为例。首先,在mysql安装目录下找到my.ini这个文件,修改其中的两处地方:
    [client]port=3306[mysql]default-character-set=utf8
    # The default character set that will be used when a new schema or table is
    # created and no character set is defined
    character-set-server=utf8 如果你的查询条件是中文的话,以题为例,在执行查询前加上这句:ps.execute("set Names utf8"); 例如:
    sql="SELECT * FROM  schools WHERE Sheng=?  ORDER BY SchoolID ASC";
             ps=con.prepareStatement(sql);
          ps.setString(1, sheng);
          ps.execute("set Names utf8");               rs=ps.executeQuery(); 
    做到这里,题中问题即可解决。刚才验证的时候发现往数据库中写入中文的时候也有乱码,解决方法首先修改上述提到的my.ini文件,然后再服务器端获取客户端数据前加上这句:request.setCharacterEncoding("utf-8");即可。
    另外, 当需要把从数据库中获取的数据(中文数据)发送到客户端时,例如当你用ajax向前台反馈数据时,在发送数据前加上这句response.setContentType("text/html;charset=utf-8");即可。
      

  6.   

    没解决 我的工程的数据库的字符集都是utf-8