CSV

February 04, 2009

CakePHP 1.2Shift-JISのcsv出力機能が久しぶりに必要になって過去のソースを漁ることになってしまったので、今後のためにここにメモ。

beforeFilterとafterFilterを使うのがポイントだった。
元情報は忘れた。

function beforeFilter(){

    
//csv出力用
    
if ($this->action == 'csv'){
        
Configure::write('debug', 0);
        
// 出力データの文字コード変換
        // afterFilter で文字コード変換するためにob_startで
        // 出力のバッファを行なう
        
ob_start();
    }

}

function
csv(){
         
//CSV出力用
}

function
afterFilter(){
    
//csv出力用
    
if ($this->action == 'csv'){
        
// バッファを取得して、出力バッファをクリア
        
$out = ob_get_clean();

        
/**
         * 出力文字コードの変換
         */
        
$out = mb_convert_encoding($out, "SJIS-win", "UTF-8");
        echo
$out;
    }
}