iT邦幫忙

0

如何使用PHP建立、寫入Big5的文字檔案

參考了網路上的文章,有一篇寫說只要PHP是用Big5編碼寫的程式,就可以產生Big5的txt檔案,但是我測試的時候仍然是UTF-8格式,請問大神,有沒有範例可以指導呢?

我的程式碼
現在加上了轉換的函數,可以轉成ANSI,但是還是無法轉成BIG5

2021/09/13

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>TXT</title>
</head>
<body>

<?php
//要建立的兩個檔案
$TxtFileName = "Demo.txt";

//以讀寫方式打寫指定檔案,如果檔案不存則建立
if( ($TxtRes=fopen ($TxtFileName,"w ")) === FALSE){
    echo("建立可寫檔案:".$TxtFileName."失敗<br />");
    exit();
}
echo ("建立可寫檔案".$TxtFileName."成功!<br />");
$StrConents = "中文測試";//要 寫進檔案的內容
$StrConents = mb_convert_encoding( $StrConents,'BIG5', 'UTF-8');

if(!fwrite ($TxtRes,$StrConents)){ //將資訊寫入檔案
    echo ("嘗試向檔案".$TxtFileName."寫入".$StrConents."失敗!<br />");
    fclose($TxtRes);
    exit();
}

echo ("嘗試向檔案".$TxtFileName."寫入".$StrConents."成功!<br />");
fclose ($TxtRes); //關閉指標
?>

</body>
</html>
看更多先前的討論...收起先前的討論...
淺水員 iT邦大師 6 級 ‧ 2021-09-13 13:02:22 檢舉
如果只是英文,Big5 跟 utf-8 是相容的阿
你測試時寫幾個中文字看看
從資料庫轉出的資料,還是會以資料庫設定的charset為準哦

你可以用iconv轉Big5
alan0219 iT邦新手 5 級 ‧ 2021-09-13 13:18:47 檢舉
測試過以下方式

```
$StrConents = iconv('UTF-8', 'BIG5//IGNORE', $StrConents);

if(!fwrite ($TxtRes,$StrConents)){ //將資訊寫入檔案
echo ("嘗試向檔案".$TxtFileName."寫入".$StrConents."失敗!");
fclose($TxtRes);
exit();
}
```

結果這段變成沒反應
淺水員 iT邦大師 6 級 ‧ 2021-09-13 16:29:49 檢舉
> 可以轉成ANSI,但是還是無法轉成BIG5

我想問你確認輸出文字檔的編碼是用什麼軟體看的
如果是微軟的記事本,一堆編碼他都叫做 ANSI,很容易誤導使用者
alan0219 iT邦新手 5 級 ‧ 2021-09-14 17:30:16 檢舉
的確~是用記事本,不過我用NOTEPAD++開啟也是ANSI
淺水員 iT邦大師 6 級 ‧ 2021-09-14 18:38:08 檢舉
因為字太少,NOTEPAD++ 無法判斷是哪國的語言
當字數夠多時,應該就會被判斷為 Big5 了
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
海綿寶寶
iT邦大神 1 級 ‧ 2021-09-13 12:25:15

試試看
fwrite($fh, iconv(‘UTF-8’, ‘BIG5//IGNORE’, $line));
資料來源

alan0219 iT邦新手 5 級 ‧ 2021-09-13 12:39:06 檢舉

執行失敗,頁面完全沒有反應

if(!fwrite ($TxtRes, iconv('UTF-8', 'BIG5//IGNORE', $StrConents))){ //將資訊寫入檔案
    echo ("嘗試向檔案".$TxtFileName."寫入".$StrConents."失敗!");
    fclose($TxtRes);
    exit();
}
淺水員 iT邦大師 6 級 ‧ 2021-09-13 16:23:19 檢舉
0
Hankz
iT邦新手 2 級 ‧ 2021-09-13 13:43:45

1. 設定PHP為BIG5
PHP要設為big5請用ini_set('default_charset', 'Big5');
<meta charset="Big5">是設給HTML的
另外,非常不建議改PHP的編碼,很容易造成問題

2. CODE

<?php
//要建立的兩個檔案
$TxtFileName = "Demo.txt";

//以讀寫方式打寫指定檔案,如果檔案不存則建立
if( ($TxtRes=fopen ($TxtFileName,"w ")) === FALSE){
    echo("建立可寫檔案:".$TxtFileName."失敗");
    exit();
}
echo ("建立可寫檔案".$TxtFileName."成功!</br>");
$StrConents = "Welcome To ItCodeWorld!中文";//要 寫進檔案的內容

if(!fwrite ($TxtRes,mb_convert_encoding($StrConents, 'big5', 'utf8'))){ //將資訊寫入檔案
    echo ("嘗試向檔案".$TxtFileName."寫入".$StrConents."失敗!");
    fclose($TxtRes);
    exit();
}

echo ("嘗試向檔案".$TxtFileName."寫入".$StrConents."成功!");
fclose ($TxtRes); //關閉指標
?>
alan0219 iT邦新手 5 級 ‧ 2021-09-13 14:25:02 檢舉

已經改回UTF-8了,感謝指教

0
chinghunglin
iT邦新手 5 級 ‧ 2021-09-13 14:37:30

這讓我想到多年前的許蓋功測試

alan0219 iT邦新手 5 級 ‧ 2021-09-13 14:43:08 檢舉

很久以前偶爾摸一下PHP的時候(真的只是摸一下),已經用UTF8寫,所以碰到這需求的時候,真的有點矇。

我要發表回答

立即登入回答