2019年4月30日 星期二

CSV檔補上BOM (exec PHP under apache)

開發程式時遇到一個問題。
就是CSV檔如果用EXCEL開中文的部份就會變亂碼,即使我檔案裡面明明是UTF8也一樣。

查了一下,就是要在檔案加上BOM,讓EXCEL知道檔案的編碼是UTF8

網路上可以查到很方便的解法,它是在CLI下運作的:

sed -i '1s/^\(\xef\xbb\xbf\)\?/\xef\xbb\xbf/' $input_ip.csv
如果前面有加了就不要再加 如果沒有加就加

sed -i '1s/^/\xef\xbb\xbf/' test.csv
不管怎麼樣都要加。

以上這兩個都是好方法,我測試時不管是丟在PHP程式裡再用exec來執行或在CLI手動執行時都正常。但放在網頁執行就有問題。大概又是那些要加反斜線 (\)之類的問題。但試了一下都沒有解決。於是我去找其它不需要加反斜線的解法,就像下面這行:

exec("printf '\xEF\xBB\xBF' | cat - tmp.csv > policies-out.csv");
在網頁環境執行PHP一樣可以跑。  

1 則留言: