用PHP將HTML輸出成RTF文件發生中文亂碼問題求救 --急問

edited 十月 2013 in 進階PHP討論
請問PHP高手級大老:

我在做中科院防火牆申請系統時遇到一個問題很棘手,就是在將查詢結果
帶有數據資料的表格轉輸出成RTF格式存檔時遇到中文亂碼問題!

我更動<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />也沒用

底下是我自己寫一個輸出Word文件的類別程式,供參考!
已註解掉的程式片段是已經試過但還是有亂碼產生的程式!

請各位幫我解答 謝謝!


class word
{

function start()
{
ob_start();



}


/*
// output RTF document
function outRTF($data)
{
$content = $data;
$replacements = array ('\\' => "\\\\",
'(' => "\(",
')' => "\)",
'[' => "\[",
']' => "\]",
'-' => "\-",
'~' => "\~",
':' => "\:",
'。' => "\。",
',' => "\,",
'....' => "\....",
'「' => "\「",
'」' => "\」",
'/' => "\/"
);



//$search = ":";
foreach($replacements as $orig=>$replace){

$document = str_replace($orig, $replace, $content);

} //end ... foreach
//$document = str_replace($search, $value, $document);

return $document;
}//end...function
*/



// set save path and format string
function save($path)
{
//unlink($path);
$data=ob_get_contents();
//$new_data = $this->outRTF($data);
$this->wirtetoword($path,$data);
ob_end_clean();


}


//write data to word
function wirtetoword ($fn,$data)
{


$fp=fopen($fn,"wb");
fwrite($fp,$data);
fclose($fp);
}
}


欲輸出的資料區塊必須用底下片段呼叫上面類別即可以成功輸出RTF文件
<?php

include_once('word.php');
$word=new word();
?>

<?php

$word->start();
$word->save("c:\CSII.rtf");
?>



輸出畫面必須要有的欄位, 資料數據是從 MSSQL 帶出

申請人員姓名:小莉
電話:
日期: 2008-04-06 18:20:5

需求說明:工作需要使用網路

預計啟用~結束時間:

服務名稱 HTTP HTTPS
TCP/UDP埠號 80 443
來源IP位址 192.168.12.10
目的IP位址 192.168.12.11
開放時間 上班時段
備註 五月底開通



申請單位簽章:
核准單位簽章:

申請人員
單位主管
管理人員
單位主官


審查結果:
□同意 啟用時間:________________
□不同意 □緩議
審查日期:

【註】

由申請人員依需求填寫申請單,並由申請單位之二級主管〈含〉以上核定。
申防火牆系統管理員進行初審,再由一級單位副主官〈含〉以上複審。
申請表編號由防火牆系統管理人員統一填寫,申請表編號格式:單位代碼-防火牆系統代碼-年-流水號,ex:3503-CSNET-092-001。
預計啟用/結束時間範例如 2003/11/18-2004/11/18,無法預估結束時間則填寫2003/11/18~2004/11/18,服務名稱若為 well known port , 直接填寫,如 HTTP,FTP,SMTP...等,其餘範例如下:TCP-1521 ,UDP-1521 。
TCP/UDP Port 號碼欄之範例如下:TCP 80,UDP 53 ....等。
開放時間:全天填寫「ALL」,其他填寫小時制,如 08:00-17:00。

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=3321

評論

Sign In or Register to comment.