使用火車頭發(fā)布DEDECMS 5.5 出現(xiàn)亂碼的解決辦法

字號:


    dedecms實(shí)現(xiàn)"文章標(biāo)題_欄目二_欄目一_網(wǎng)站名"類型標(biāo)題
    但發(fā)布到DEDE 5.5的時(shí)候,自帶的程序默認(rèn)的是發(fā)布文章的版塊。而我做的是下載站。去網(wǎng)上DOWN了個不錯的模塊,針對DEDE 5.1、5.3、5.5通用的一個模板。里面有全部文章,商品,下載等所有模板。 下載地址:http://www.jb51.net/softs/26772.html
    接著繼續(xù)發(fā)布,到發(fā)布的時(shí)候又有一個問題,發(fā)現(xiàn)發(fā)布的文章是亂碼。這個地方需要修改一個文件,打開DEDE目錄下的config.php 在最后一行加入:
    //給POST變量做轉(zhuǎn)碼處理,適用于火車采集器中Urlencode發(fā)布的內(nèi)容
    foreach($_POST as $key=>$value){
    ${$key} = $_POST[$key] = urldecode($value);
    }
    即可解決亂碼問題。 由于沒有考慮到DEDE提交的數(shù)據(jù)中還有FLAGS數(shù)組,上面的Urldecode操作會將FLags的值抹掉,所以,有一些用戶就會發(fā)現(xiàn)發(fā)布推薦參數(shù)時(shí) 不成功
    加入這行代碼即可:
    //給POST變量做轉(zhuǎn)碼處理,適用于火車采集器中Urlencode發(fā)布的內(nèi)容
    foreach($_POST as $key=>$value){
    !is_array($value) && ${$key} = $_POST[$key] = urldecode($value);
    }
    如果要遍歷數(shù)組,對所有值進(jìn)行處理的話,我寫了一個遞歸函數(shù),適于用所有變量,包括變量中的數(shù)組。
    function ArrayUrldecode($_POST){
    foreach($_POST as $key=>$value){
    if(is_array($value)){ ArrayUrldecode($value);
    }else{
    $_POST[$key] = urldecode($value); } }
    return $_POST;
    }