Discuz功能改進-活動資料及後台會員資料匯出修正


近期因為工作需要,在DZ後面需要匯出會員資料,但是在這邊卻發現了一些問題,匯出會是亂碼....

上網找了一下相關資源發現有網友分享,這邊就做一下紀錄,但是這位網友修改的時間比較久,大概是DZ2.0以前了吧,所以不太確定是否可套用於DZ3.2,這邊HF就實際測試修改看看。

依照網友Linux0911的提供的說法,DZ再匯出會員&活動資料時的時候是.csv,但內容是亂碼,所以可能是邊馬上問題。

1.活動匯出
先來講活動文章部分的修正,先打開路徑/source/module/forum/forum_misc.php
然後查找以下代碼
        if($_G['charset'] != 'gbk') {
                $csvstr = diconv($csvstr, $_G['charset'], 'GBK');
        }

然後修改成以下
    if($_G['charset'] != 'big5') {
        $csvstr = diconv($csvstr, $_G['charset'], 'BIG5');
    }
這樣子匯出的.csv編碼就會自動變成big5了,office就可以正常讀取。
但是這邊HF發現有一個重大的問題,如果活動報名人數超過95人或者達95人,就會出現報名資料缺少的問題....
所以後改用UTF8編碼方式就可以解決了
        if($_G['charset'] != 'big5') {
                $csvstr = diconv($csvstr, $_G['charset'], 'utf-8');
        }
修改成UTF8之後打開雖然會是亂碼,因為OFFICE可能不認識UTT8編碼,這邊就必須用文字編譯器去打開轉換為BIG5就可以正常使用了。
目前這個方式人數就算超過95人也會出也不會有報名資料缺少的問題。


2.後臺會員資料匯出

打開路徑/source/admincp/admincp_members.php

一樣查找以下代碼
        if($_G['charset'] != 'gbk') {
                $detail = diconv($detail, $_G['charset'], 'GBK');
        }
然後將其修改成以下
        if($_G['charset'] != 'big5') {
                $detail = diconv($detail, $_G['charset'], 'BIG5');
        }
就可以正常讀取了,HF自己是修改成BIG5,目前匯出上都沒有甚麼問題,不像活動資料會有缺少,所以下面也會一樣提供出UTF8修改方式。
        if($_G['charset'] != 'big5') {
                $detail = diconv($detail, $_G['charset'], 'utf-8');
        }
修改成UTF8之後也是一樣需要透過編譯器轉碼唷!
最後Linux0911網友這邊還有新增修改一個地方,但是HF這邊是沒有修改到,可是一樣做一下紀錄
但是這個修改有特別註明是DZX2版本,所以修改的時候要注意一下
打開路徑 /source/admincp/admincp_card.php
BIG5就改成以下
            if($_G['charset'] != 'big5') {
                    $detail = diconv($detail, $_G['charset'], 'BIG5');
            }
然後UTF8替換成以下即可
        if($_G['charset'] != 'big5') {
                $detail = diconv($detail, $_G['charset'], 'utf-8');
        }

這邊HF查了一下檔案結構表admincp_card是充值卡的系統文件,目前這邊HF是還用不到,所以並沒有去針對修改唷~

原作者:Linux0911

留言

這個網誌中的熱門文章