Re: [請益] PHP 產生 RTF
※ 引述《a613204 (胖胖)》之銘言:
: header('Content-type: application/msword;charset=utf-8');
: header('Content-Disposition: inline, filename=app_form.rtf');
: $filename='app.rtf';
: $fp=fopen($filename,'r');
: $output=fread($fp, filesize($filename));
: fclose($fp);
: $output=str_replace('<<last_name>>',' '.$row->last_name,$output);
: $output=str_replace('<<first_name>>',' '.$row->first_name,$output);
: echo $output;
: 目前大概是以這種方式產生RTF檔案
: 不過發現如果變數內容是中文的話會變成亂碼
: 請問該怎麼處理呢?? 頁面編碼已經設定成utf8了
我也發生同樣的問題!若用UTF-8編碼的中文取代rtf檔裏面的變數,使用者下載回來
的檔案會發生檔案損毀,無法開檔.我後來用iconv()來將UTF-8的中文字轉成BIG5碼
就可以了.但有些UTF-8的字轉成BIG5會變亂碼,目前這方面我也是無解.
我的作法如下:
<?php
$Output = file_get_contents("abc.rtf");
$Output = str_replace("<<first_name>>", iconv("utf-8","big5",$row->first_name),
$Output );
$Output = str_replace( "<<last_name>>", iconv("utf-8","big5",$row->last_name),
$Output);
header('Content-type:application/msword;charset=utf-8');
header('Content-Disposition: attachment;filename=abc.doc');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
ob_clean();
flush();
echo $Output;
exit;
?>
希望能拋磚引玉,有那位大大可以指導一下,怎樣才能原汁原味不用將UTF-8
編碼的中文直接取代rtf檔內的變數符號,而不會發生檔案損毀,無法開檔的錯誤.
請指導,謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.72.181.22
→
05/28 13:21, , 1F
05/28 13:21, 1F
→
05/28 14:24, , 2F
05/28 14:24, 2F
討論串 (同標題文章)