方法一:解决方法是对于包含中文的字段加上"binary"属性,使之作为二进制比较,例如将"name char(10)"改成"name char(10)binary"。 方法二:   如果你使用源码编译MySQL,可以编译MySQL时使用--with--charset=gbk 参数,这样MySQL就会直接支持中文查找和排序了。 方法三:   可以使用 Mysql 的 locate 函数来判断。以上述问题为例,使用方法为:
SELECT * FROM table WHERE locate(field,'李') > 0;
本站使用的就是这种方法,感觉还不错。:P
方法四:把您的Select语句改成这样,SELECT * FROM TABLE WHERE FIELDS LIKE BINARY '%FIND%'即可!

解决方案 »

  1.   

    select * from table1 where Binary title LIKE '%%".$key."%%';
    多加一个试试
      

  2.   

    先处理查询的关键字  $skey=urldecode(trim($key));
    再去查询就没问题了,不需要去改数据结构。
      

  3.   

    to: javavip(): 我的汉字是经过编码,解码的。
    to: ice_berg16(寻梦的稻草人): 不行。
    chinaworker(网络混混 Hrcn.CN) 的方法:(除掉方法2)方法一:试过,不行。方法四:同样不行。 两者结合起来还是不行。
    方法三:
    $query="select * from table1 where locate(title,'%".$key."$') > 0";
    一个也查不到了.顺便问一下:locate是什么意思???
      

  4.   

    我用到的方法是不用加的方法,直接使用这样的语句 
    select * from table1 where Binary title LIKE '%$key%';
    搜索到的结果是很正常,不管是搜索几个都是正常的!
      

  5.   

    to 楼主,那么多方法都试过了,不行?不可能呀,你再试试我说的.1、将你数据库中要使用中文查询的字段改一下,加上"binary"属性,
    让它可以作为二进制比较。(可使用如phpmyadmin类工具)2、改掉你所使用的查询命令

    select * from table1 where Binary title LIKE '%".$key."%';

    select * from table1 where title LIKE '%%".$key."%%';
    加上两个%%可解决单个汉字查询的问题,因为%只代表一个字节的字符,而
    汉字是由两个字节组成的字符。请将1和2都做,可以保证解决单个汉字查询的问题。(我的东西就是这么做
    的。)如果还是不是,可以基本肯定是楼主的PHP需要重新装了,请重装吧。
    个人意见,供楼主参考
      

  6.   

    select * from table like binary '%".$key."%'
      

  7.   

    建议在前面加上这一句:
    $key=$_POST["key"];//如果你的form 的method是 post 的话
    $key=$_GET["key"];//如果你的form 的method是 get 的话如果
    select * from table where title LIKE '%".$key."%';
    还不行的话,请重装吧~:)
      

  8.   

    级别不一样...一般异常都是Exception的子类, 运行期异常与System.err平级的一般异常值得捕获,运行期异常就管部了,无能为力地.