方法很多,最简单的就是用UTF-8字符就不大会有这种情况

解决方案 »

  1.   

    上次记得在CSCN看到关于海量的数据库改进了说解决了这个问题.你或许搜索一下吧.
      

  2.   

    解决办法写在我的blog里
    http://www.tianjiaonet.com/blog.php?aid=20&BlogID=1
      

  3.   

    如果mysql版本是4。1的话,只要数据库的字符集设为gbk(gb2312),
    然后character系列变量设置正确(set names gbk)就不会有这个问题
      

  4.   

    我的mysql是4.0版本的,我将字符集设为gb2312,还是同样问题。
      

  5.   

    Dictworld.com Blog - 天娇网络日志
    http://www.tianjiaonet.com
     
    主页 >> 解决单字中文匹配问题 
    2005-06-06 
    解决单字中文匹配问题 
    单字中文匹配问题的原因就是由于GB2312字符集的中文是由两个字节组成,这样就很容易造成一个中文字符的后一个字节跟另一个中文字符的前一个字节又能组成另一个中文字符,这就是通常输入一个中文字会搜索出看似无关的中文字符串。而Mysql匹配的时候不是多字节安全的,也就是纯粹是字节比较。那么出现这种问题,怎么解决呢?一般有三种方法解决:
    1)改变数据库的字符集,采用UTF-8,因为UTF-8中文是由三个字节组成,而且相互是有关系的,所以不会出现前后截断成新的中文字符。
    2)其实Mysql数据库提供了字符串操作,对于单字中文可以用INSTR或者LOCATE两个函数,这两个函数都是多字节安全的。
    例如:
    $sql = "SELECT * FROM table WHERE INSTR(name, '天') > 0";
    $sql = "SELECT * FROM table WHERE LOCATE(name, '娇') > 0";
    3)原理跟中文字符串截取差不多。首先先把所有可能的记录都搜索出来,然后用PHP程序去判断是否包含单字,可以用mb_strpos函数或者自己逐个字节分析也不难。
    以上是本人的一点拙见,有不妥之处,欢迎大家提出宝贵意见。 
    Dictworld.com : 18:42 | 评论: (0)