雖然是解決匯出CSV的亂碼問題,用EXCEL開啟會正常。
BUT,就是這個BUT
如果是使用EXCEL開啟後修改並存檔,EXCEL會把檔案編碼又改為big5,而且原本逗號分隔會變成TAB分隔 (到底是多GY = =")
節錄別人的測試結果 來源
--
EXCEL 測試CSV檔的結果
- 無BOM的UTF-8 CSV檔,以excel開啟會看到一堆亂碼
- 該CSV檔以記事本可正常開啟,存檔後再給excel開啟就能正常顯示
- 記事本存檔時會在檔案最前面加上Unicode-BOM,檔案會增加3byte(EF BB BF)
- excel開啟經過記事本處理過後的CSV檔,編碼變成big5
- 直接存檔→逗點分隔會變成定位鍵(tab)分隔,編碼變成big5
- 另存新檔→選擇儲存為csv檔仍是逗點分隔,但是編碼會變成big5
- 另存新檔→選擇儲存為Unicode文字(預設),編碼是UTF-8但會變成定位鍵(tab)分隔
--
簡單說,直接把CSV轉成UTF-8用EXCEL開啟是沒問題的,但是後續如果需要編輯存檔的話就大有問題了。
而我需要的是"輸出CSV檔"->"使用EXCEL編輯"->"匯入更新的CSV檔"
後來找到的解法是:
"PHP端把UTF-8內容輸出成big5的CSV檔"->"使用EXCEL編輯"->"匯入更新的big5的CSV檔"->"PHP端再把big5內容轉為utf-8"
使用function為:mb_convert_encoding($value , "Big5", "UTF-8"); // UTF-8轉為BIG5
不使用iconv()這個函數,遇到沒辦法轉的字程式會中斷,導致文件不全。
PHP big5轉utf8不要用iconv(),iconv這個函數,用mb_convert_encoding
真的是一堆眉角....
全站熱搜
留言列表