做了个注册界面,可以用中文做用户名。但是检测是否存在用户名出了问题,如果是用英文用户名注册,程序能检测出数据库是否存在相同的用户名。但如果用中文注册,就检测不出来了。求解。

解决方案 »

  1.   

    只要编码正确,这样的字符都可以。
    SELECT * FROM `user` WHERE `login_name` = '○o佑鉺釘ㄨ'
      

  2.   

    数据库编码utf8-bin
    页面程序编码:utf-8
    header("Content-type:text/html;charset=UTF-8");
    $username=trim($_GET["username"]);$sql="select * from menber where name='$username'";
    $query=mysql_query($sql);
    $rst=mysql_fetch_object($query);
    mysql_close($id);
    if ($rst==false)
    {
    echo 'false';
    }
    else
    {
    echo 'true';
    }
      

  3.   

    不是编码的问题。这个判断我是用AJAX+php。
    现在问题已经出了点眉目,很可能是AJAX出现问题了。在IE6.0中,出现这个问题。在FF中,又没有这样的情况。搞得头很大。看来要重新梳理AJAX。
    //传输方式
    xmlhttp.open("GET","user_ck.php?username="+document.getElementById("username").value,true);
      

  4.   

    xmlhttp.open("GET","user_ck.php?username="+encodeURIComponent(document.getElementById("username").value),true);改成这样试试
      

  5.   

    也许IE上传的时候转码了,你在php端加上urldecode试一下
      

  6.   

    encodeURIComponenturldecode都不管用我也认为IE传递数据时出了问题。有没有会的啊
      

  7.   

    前台文件是utf-8吗?
    相关JS文件是utf-8吗?encodeURIComponent这个是要要的,你在PHP页里,接收到后直接打印出来,ajax得到后再弹出,看下是否是正常的???
      

  8.   

    JS文件
    var xmlhttp = false;
    try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
    try {
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e2) {
    xmlhttp = false;
    }
    }
    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    xmlhttp = new XMLHttpRequest();
    }
    function Ajax(data){
    xmlhttp.open("GET","user_ck.php?username="+document.getElementById("username").value,true);//设置传输方式
    xmlhttp.send(null);
        document.getElementById('username_notice').innerHTML = process_request;//显示状态
    xmlhttp.onreadystatechange=function(){
    if (4==xmlhttp.readyState){
    if (200==xmlhttp.status){
    var responseText = xmlhttp.responseText;
       if (responseText=="true" ){
       ck_user("true");
          }
       else{
       ck_user("false");
       }
    }else{
    alert("发生错误!");
    }
    }
    }
    }
    function chkUserName(obj){
         if (checks(obj.value)== false)
      {
    obj.className = "FrameDivWarn";
    showInfo("username_notice",msg_un_format);
                change_submit("true");
      }
    else if(obj.value.length<1){
    obj.className = "FrameDivWarn";
    showInfo("username_notice",msg_un_blank);
                change_submit("true");
    } else if(obj.value.length<3){
    obj.className = "FrameDivWarn";
    showInfo("username_notice",username_shorter);
                change_submit("true");
    }
    else{
    //调用Ajax函数,向服务器端发送查询
    Ajax(obj.value);
    } }



    //--------------用户名检测---------------------//
    function ck_user(result)
    {
        if ( result == "true" )
      {  
        document.getElementById('username').className = "FrameDivWarn";
    showInfo("username_notice",msg_un_registered);
        change_submit("true");//禁用提交按钮
      }
      else
      { 
        document.getElementById('username').className = "FrameDivPass";
    showInfo("username_notice",msg_can_rg);
        change_submit("false");//可用提交按钮
      }}
      

  9.   

    PHP文件<?phpinclude("conn.php");
    //设置页面编码
    header("Content-type:text/html;charset=utf-8");$username=trim($_GET["username"]);$sql="select * from menber where name='$username'";
    $query=mysql_query($sql);
    $rst=mysql_fetch_object($query);
    mysql_close($id);
    if ($rst==false)
    {
    echo 'false';
    }
    else
    {
    echo 'true';
    }?>
      

  10.   

    目前在FF测试没有问题,在IE可以测英文,检测中文时不起作用。encodeURIComponent这个不知道好用不?一用之下,连FF浏览器都不检测中文了。
      

  11.   

    问题所在:document.getElementById("username").value//encodeURI(document.getElementById("username").value)
    ajax传过来的是utf-8的,你的数据库如果不是相同的字符集的话需要转码或操作才对
      

  12.   

    ajax好像不能直接将汉字传过去请用encodeURI()转下
      

  13.   

    Ajax发送中文、PHP接收
    这个比较复杂:
    Ajax中先用encodeURIComponent对要提交的中文进行编码
    PHP中:
    $GB2312string=iconv( 'UTF-8', 'gb2312//IGNORE' , $RequestAjaxString);PHP写入MySQL数据库
    建立conn时,query一下set names "gb2312"
    在网上找的,先试验一下。看样子AJAX发送中文是比较郁闷。
      

  14.   

       utf-8转化成gb2312  有可能丢字符哦,建议  还是全部统一起来
      

  15.   

    你接受的时候
    ://AJAX GET传来的值 解码
    $kahao=iconv("utf-8","gb2312",urldecode($_GET['kahao']));
    $leixing=iconv("utf-8","gb2312",urldecode($_GET['leixing']));
    $qymc=iconv("utf-8","gb2312",urldecode($_GET['qymc']));
    $gzsj=iconv("utf-8","gb2312",urldecode($_GET['gzsj']));
    $daiyu=iconv("utf-8","gb2312",urldecode($_GET['daiyu']));
    $cc=iconv("utf-8","gb2312",urldecode($_GET['cc']));
    $date=date("Y-m-d H:i:s");
      

  16.   

    通过,只需要加对提取的值encodeURIComponent就可以了。其他的解码啊什么的,都是画一条蛇再画上两只腿。
    发分。