日期:2010-10-16 19:16:00 来源:本站整理
<b>UCenter与Discuz编码不统一的兼容处理办法</b>[网站美工]
本文“<b>UCenter与Discuz编码不统一的兼容处理办法</b>[网站美工]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
案例:
UCenter采取的字符编码是GBK,Discuz论坛A采取的编码是UTF-8,Discuz论坛B采取的编码方法是GBK.整合后问题以下:
在论坛A注册的中文用户名可以在论坛A登录,但无法在论坛B登录.英文及数字用户名不受影响.
解析:
论坛A采取的是UTF-8编码,它传送给UCenter的数据也是UTF-8的,所以增添到UCenter数据库的数据也是UTF-8的.在论坛B中以GBK方法读取这些数据时,就会呈现问题.(在UCenter中看到这些数据均为乱码)
办理:
改正论坛A的UCenter接口,强迫改正其发送给UCenter的数据编码方法为GBK,并强迫返回的数据为UTF-8.
改正uc_client目录下的client.php文件中的uc_api_post函数为以下:
- // 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);
- }
以上是“<b>UCenter与Discuz编码不统一的兼容处理办法</b>[网站美工]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论