上一篇 [PHP] 解決匯出 CSV 的亂碼問題

雖然是解決匯出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

 

 

真的是一堆眉角....

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 dizzy03 的頭像
    dizzy03

    碎碎念

    dizzy03 發表在 痞客邦 留言(0) 人氣()