UCenter与不同编码的网站,解决乱码问题

旧版博客 ayflying 1506℃ 评论
之前dz是gbk的,所以ucenter也是gbk的,今天跟另一个网站整合的时候死活登录不上去,开始以为是整合失败了。找问题,查key,然后测试注册了一个,意料之外的居然成功了,去uc用户中心去的时候才发现用户名是乱码的,于是才意识到这次需要整合的网站是utf8的。 找到问题的源头就好解决了,网上找了一下资料,结果各种说不可能解决,或者说什么必须转码什么的,我有几个网站,转码毕竟不正常,然后尝试了下使用php的iconv()试试传输的时候转码,居然奇迹般的成功了!哈哈~下面贴出需要修改的代码。 以下是需要整合的网站为utf8编码,ucenter为gbk编码 在中找到uc_client/client.php,找出对应位置代码,修改为 [code] // edit by redice function uc_api_post($module, $action, $arg = array()) { $s = $sep = ''; foreach($arg as $k => $v) { // 强制转换编码方式为gb2312,以兼容七彩悠悠通行证 $k=iconv( "UTF-8", "gb2312",$k); $k = urlencode($k); if(is_array($v)) { $s2 = $sep2 = ''; foreach($v as $k2 => $v2) { // 强制转换编码方式为gb2312,以兼容七彩悠悠通行证 $k2=iconv( "UTF-8", "gb2312",$k2); $k2 = urlencode($k2); // 强制转换编码方式为gb2312,以兼容七彩悠悠通行证 $tmp=iconv( "UTF-8", "gb2312",uc_stripslashes($v2)); $s2 .= "$sep2{$k}[$k2]=".urlencode($tmp); $sep2 = '&'; } $s .= $sep.$s2; } else { // 强制转换编码方式为gb2312,以兼容七彩悠悠通行证 $v=iconv( "UTF-8", "gb2312",uc_stripslashes($v)); $s .= "$sep$k=".urlencode($v); } $sep = '&'; } $postdata = uc_api_requestdata($module, $action, $s); $result=uc_fopen2(UC_API.'/index.php', 500000, $postdata, '', TRUE, UC_IP, 20); // 强制转换编码方式为utf-8,以兼容七彩悠悠通行证 return iconv( "gb2312", "UTF-8",$result); } [/code]

转载请注明:七彩悠悠博客 | 心悠悠 情悠悠 » UCenter与不同编码的网站,解决乱码问题

高效,专业,悠悠博客

联系我们