Re: [請益] PHP 產生 RTF
※ 引述《Clessin (Clemond)》之銘言:
: ※ 引述《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檔內的變數符號,而不會發生檔案損毀,無法開檔的錯誤.
: 請指導,謝謝!
abc.rtf 是不是定義為cp950編碼?所以你用big5就可以..看檔頭一下
如果是~則內容轉 RTF: \u8220? 這種格式..就相容於cp950
$str = str_replace(array("&", "#", ";"), array("\\", "u", "?"),
mb_convert_encoding("中文", "HTML-ENTITIES", "UTF-8"));
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 101.13.45.221
討論串 (同標題文章)