英文账号模拟登录正常,为什么中文账号模拟登录不了? 英文账号模拟登录正常,为什么中文账号模拟登录不了?是不是跟编码有关呢,UTF8、GB之间转换过还是登不了,我用的LINUX,怎么看我系统现在用的是什么编码呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 代码如下: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); 查看系统 cat /etc/sysconfig/i18n在你的接收PHP文件 输出 userName 看下内容是否是对的 没有这个文件/etc/sysconfig/i18n,也没搜着文件i18n /etc/sysconfig/i18n只有redhat、FC、centos系列的linux才有。另外,/etc/sysconfig/i18n中的设置会被~/.i18n中的设置所代替。所以最好查看~/.i18n~/代表当前登陆用户的主目录,也就是/home/xxx。这个i18n前面有个"点",他是个隐藏文件。 模拟登录,接收到的内容如下转换后显示是正常的:$a=iconv('utf-8', 'gbk',Curl($url,$postfields));登录时输入的中文账号应该怎么转换才正确呢? 你查一下PHP手册里 mb_ 为前缀的几个函数吧,这是你需要用的. 谢谢sibang,必须用mb_为前缀的函数吗?我的LINUX系统不支持mbstring,装了半天也没装成功 $a=iconv('utf-8', 'gbk',$postfields);只是对待发送数据进行转换。linux系统好像是UTF-8的。 如果这个用户名不是用来访问磁盘目录的,那么跟磁盘目录使用的是什么字符集其实没有半毛关系。你将数据发送给的那个网页地址,它是什么字符集的?它用GBK就投递GBK,它用UTF-8就用UTF-8。中文用url_encode一下会比较好。 【求助!】zend studio安装问题 CentOS5.5装mysql服务器启动失败 IIS+PHP(5.1.2) 配置问题 php测试老出错 fsockopen打开错误 有关PHP扩展的问题 怎么从文本中取出符合条件的最大几个值 关于utf8中的字符替换的问题 php session过期问题 新手想做一个会员系统,请大神指点 好头疼,拜托各位了!!! 正则过滤全角空格
$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);
在你的接收PHP文件 输出 userName 看下内容是否是对的
/etc/sysconfig/i18n只有redhat、FC、centos系列的linux才有。
另外,/etc/sysconfig/i18n中的设置会被~/.i18n中的设置所代替。所以最好查看~/.i18n~/代表当前登陆用户的主目录,也就是/home/xxx。这个i18n前面有个"点",他是个隐藏文件。
$a=iconv('utf-8', 'gbk',Curl($url,$postfields));登录时输入的中文账号应该怎么转换才正确呢?
linux系统好像是UTF-8的。
你将数据发送给的那个网页地址,它是什么字符集的?它用GBK就投递GBK,它用UTF-8就用UTF-8。
中文用url_encode一下会比较好。