Re: [請益] PHP 產生 RTF

看板PHP作者 (小企鵝)時間12年前 (2012/05/29 15:48), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/12 (看更多)
※ 引述《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
文章代碼(AID): #1Fn7yw-M (PHP)
討論串 (同標題文章)
文章代碼(AID): #1Fn7yw-M (PHP)