这个真得用实验了...超越理论范畴...Plan A:
本系统不变
ucenter数据库操作用gb2312,显示用utf-8
觉得悬~~Plan B:
本系统不变
ucenter数据库操作用gb2312,gb2312转utf-8(貌似见过这个函数),显示用utf-8
还是悬~~Plan C:
本系统不变
ucenter数据库操作用utf-8,直接显示
觉得根本不可能~~
编码问题完美解决方案还是统一到utf-8

解决方案 »

  1.   

    对于这样的问题,我只有2句废话
    废话1,最好是全部统一编码
    废话2, 使用gb2312互相转换utf-8的函数
      

  2.   

    一、双方独立系统
    本系统是gb2312的页面和gb2312编码的mssql
    ——————————————这个不用变,可以下常显示ucenter是utf-8的
    要看客户端,如果客户端是utf-8
    则改ucenter的数据库连接,mysql_query("set names 'utf8'");二、整合系统
       一个页内不能有两种编码
    如果你改配置方便,可以这样将客户端统一为gb2312(如果配置好改的话),这样都能显示
    但凡涉ucenter的数据库操作,加mysql_query("set names 'gb2312'");不用管数据库为何编码如果discuz设计合理的话,改一配置文件应可以了三、最好是编一编码
      

  3.   

    搞好了,ucenter提供两种方式,一种mysql直接连接,一种通过fsockopen调用ucenter的接口,现在采用第二种方法,在fsockopen之前,改变client.php的uc_api_post函数:function uc_api_post($module, $action, $arg = array()) {
    $s = $sep = '';
    foreach($arg as $k => $v) {
    if(is_array($v)) {
    $s2 = $sep2 = '';
    foreach($v as $k2=>$v2) {
    $s2 .= "$sep2{$k}[$k2]=".urlencode(uc_stripslashes(mb_convert_encoding($v2,'UTF-8','gb2312')));
    $sep2 = '&';
    }
    $s .= $sep.$s2;
    } else {
    $s .= "$sep$k=".urlencode(uc_stripslashes(mb_convert_encoding($v,'UTF-8','gb2312')));
    }
    $sep = '&';
    }
    $postdata = uc_api_requestdata($module, $action, $s);
    return uc_fopen2(UC_API.'/index.php', 500000, $postdata, '', TRUE, UC_IP, 20);
    }也就是加了mb转码
    打完收工
      

  4.   

    你的这门语言我不懂,但你可借鉴下面方法:
    用代码转换例如:
    jsp中用
    String smsort=request.getParameter("smsort");
    try {
    smsort=new String(smsort.getBytes("ISO-8859-1"),"UTF-8").toString().trim();
    } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    }
      

  5.   

    呵呵,这说明discuz考虑的还是比较周全的,架构配置比较合理
      

  6.   

    他们这个团队应该是聚集了中国大陆一半的一流php高手了啦
      

  7.   

    在不了解ucenter的情况下,确实只能统一编码
      

  8.   


    看一下下面的代码,这个“比较合理”真的是有得“比较”?function uc_api_post($module, $action, $arg = array()) {
        $s = $sep = '';
        foreach($arg as $k => $v) {
            if(is_array($v)) {
                $s2 = $sep2 = '';
                foreach($v as $k2=>$v2) {
                    $s2 .= "$sep2{$k}[$k2]=".urlencode(uc_stripslashes(mb_convert_encoding($v2,'UTF-8','gb2312')));
                    $sep2 = '&';
                }
                $s .= $sep.$s2;
            } else {
                $s .= "$sep$k=".urlencode(uc_stripslashes(mb_convert_encoding($v,'UTF-8','gb2312')));
            }
            $sep = '&';
        }
        $postdata = uc_api_requestdata($module, $action, $s);
        return uc_fopen2(UC_API.'/index.php', 500000, $postdata, '', TRUE, UC_IP, 20);
    }
      

  9.   

    换个 gbk 版本的 ucenter,ucenter 有 gbk-简、big5-繁、utf8-简、utf8-繁四个版本的,既然应用是 gbk 的,就应该选用相应版本的 ucenter。