唉,还是未解决
我的问题是这样的,我的网站(http://www.aaaa.com)跟另一个网站(http://www.bbb.com)合作,
我从自已网站取得数据后Get或Post过去(http://www.bbb.com/OK.php?param1=xxx¶m2=cccc)
之后我的网站得到一个OK或者是ERROR的返回值,其中param1是中文字
我用@fsockopen 方法 Post过去,合作方网站收到param1全是??????????
我不用@fsockopen,直接Get过去的话param1全是乱码。我的网站是utf-8,合作方是GBK,我试着用 iconv
转换,还是乱码.现在真不知道怎么办了。各位大哥,有没有什么好的解决办法呀。
或者说,这种合作有没有什么好的方法,可以避免乱码呀。
我的问题是这样的,我的网站(http://www.aaaa.com)跟另一个网站(http://www.bbb.com)合作,
我从自已网站取得数据后Get或Post过去(http://www.bbb.com/OK.php?param1=xxx¶m2=cccc)
之后我的网站得到一个OK或者是ERROR的返回值,其中param1是中文字
我用@fsockopen 方法 Post过去,合作方网站收到param1全是??????????
我不用@fsockopen,直接Get过去的话param1全是乱码。我的网站是utf-8,合作方是GBK,我试着用 iconv
转换,还是乱码.现在真不知道怎么办了。各位大哥,有没有什么好的解决办法呀。
或者说,这种合作有没有什么好的方法,可以避免乱码呀。
如何做的?
header('Content-Type: text/xml;charset=utf-8');
置于顶部$STR=iconv($str,'gbk','UTF-8');
----------------------------------
指点迷津网 http://www.zhidianmijin.com
先把串base64_encode之后传递过去 然后再接收之后base64_decode
我方是GBK 合作方是UTF-8我的做法是,把我方的字符用iconv轉換成 UTF-8, 再urlencode 傳過去實踐證明是成功的
$ret = '';
$len = strlen($str);
for ($i = 0; $i < $len; $i++) { if ($str[$i] == '%' && $str[$i+1] == 'u') { $val = hexdec(substr($str, $i+2, 4)); if ($val < 0x7f){ $ret .= chr($val);
}else if($val < 0x800){ $ret .= chr(0xc0|($val>>6)).chr(0x80|($val&0x3f));
}else{ $ret .= chr(0xe0|($val>>12)).chr(0x80|(($val>>6)&0x3f)).chr(0x80|($val&0x3f)); $i += 5;
}
} else if ($str[$i] == '%') { $ret .= urldecode(substr($str, $i, 3)); $i += 2;
} else{ $ret .= $str[$i];
}
}
return $ret;
}
post方式可以调用curl资源库
$msg=iconv('utf-8','GBK',$msg);
$msg=urlencode($msg);
原来要两个一起用
这样就OK了。