英文账号模拟登录正常,为什么中文账号模拟登录不了?
是不是跟编码有关呢,UTF8、GB之间转换过还是登不了,我用的LINUX,怎么看我系统现在用的是什么编码呢?

解决方案 »

  1.   

    代码如下:Function Curl($url,$postfields,$referer='',$cookie_jar='/test/cookie.txt'){
            $Cur = curl_init();
            $Opt = Array(
                            CURLOPT_URL => $url,
                            CURLOPT_HEADER => 1, 
                            CURLOPT_NOBODY => 1, 
                            CURLOPT_PORT => 80, 
                            CURLOPT_POST => 1, 
                            CURLOPT_POSTFIELDS => $postfields,
                            CURLOPT_RETURNTRANSFER => 1,
                            CURLOPT_SSL_VERIFYHOST => 1,
                            CURLOPT_SSL_VERIFYPEER => 0,
                            CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1',
                            CURLOPT_FOLLOWLOCATION => 1,
                            CURLOPT_COOKIEJAR => Dirname(__FILE__).$cookie_jar,
                            CURLOPT_COOKIEFILE => Dirname(__FILE__).$cookie_jar,  
                            CURLOPT_REFERER => $referer, 
                        );
            curl_setopt_array($Cur,$Opt);
            $code = curl_exec($Cur);
            curl_close($Cur);
            unSet($Cur);
            Return $code;
    }
    $url = "http://oss.cmgame.com/egbi/login.do";
    $postfields='userName=中文账号&password=dfadfad';
    $a=iconv('utf-8', 'gbk',Curl($url,$postfields));
    unset($postfields,$url);
      

  2.   

    查看系统 cat /etc/sysconfig/i18n
    在你的接收PHP文件 输出 userName 看下内容是否是对的
      

  3.   

    没有这个文件/etc/sysconfig/i18n,也没搜着文件i18n
      

  4.   


    /etc/sysconfig/i18n只有redhat、FC、centos系列的linux才有。
    另外,/etc/sysconfig/i18n中的设置会被~/.i18n中的设置所代替。所以最好查看~/.i18n~/代表当前登陆用户的主目录,也就是/home/xxx。这个i18n前面有个"点",他是个隐藏文件。
      

  5.   

    模拟登录,接收到的内容如下转换后显示是正常的:
    $a=iconv('utf-8', 'gbk',Curl($url,$postfields));登录时输入的中文账号应该怎么转换才正确呢?
      

  6.   

    你查一下PHP手册里 mb_ 为前缀的几个函数吧,这是你需要用的.
      

  7.   

    谢谢sibang,必须用mb_为前缀的函数吗?我的LINUX系统不支持mbstring,装了半天也没装成功
      

  8.   

    $a=iconv('utf-8', 'gbk',$postfields);只是对待发送数据进行转换。
    linux系统好像是UTF-8的。
      

  9.   

    如果这个用户名不是用来访问磁盘目录的,那么跟磁盘目录使用的是什么字符集其实没有半毛关系。
    你将数据发送给的那个网页地址,它是什么字符集的?它用GBK就投递GBK,它用UTF-8就用UTF-8。
    中文用url_encode一下会比较好。