iT邦幫忙

0

php 產生 txt 檔時是否可以決定編碼?utf8-BOM

$fp = fopen('123.eod', 'a') or die('ERROR');
$txt = "123";
fwrite($fp, $txt);
fclose($fp);

當我產生某一個 txt 的時候
他預設會是 utf-8 沒問題
但是因為某些需要
編碼必須為 utf8-BOM

這有辦法改成 utf8-BOM 的編碼嗎?或是從何種方式做到?
感謝~

淺水員 iT邦新手 3 級 ‧ 2019-02-13 08:47:00 檢舉
多事問一下,真正在實作有使用 flock 嗎?避免同時2人寫入資料。
1
居然解出來了
iT邦新手 4 級 ‧ 2019-02-12 16:04:41
最佳解答

可以試試這種方式:
https://stackoverflow.com/questions/4839402/how-to-write-file-in-utf-8-format
將編碼改成 utf8-BOM 試試

2
Homura
iT邦高手 2 級 ‧ 2019-02-12 15:56:25

utf8-BOM?
是指帶有BOM的utf-8嗎?
參考這篇

2
淺水員
iT邦新手 3 級 ‧ 2019-02-12 16:05:59

utf8 的 bom 就是在前面加上 EF BB BF
維基百科-位元組順序記號
範例:

$txt='123';
$bom=pack('C*',0xEF,0xBB,0xBF);
file_put_contents('test.txt',$bom.$txt);

因為 BOM 要直接放在檔案頭
所以如果你的 fopen 模式為 a 的話
對於已經有資料的檔案沒法處理
必須用其他開啟模式或是直接讀出整個檔案判斷

weiclin iT邦高手 4 級 ‧ 2019-02-12 16:09:41 檢舉

我要發表回答

立即登入回答