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

字號(hào):


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