Excel讀取UTF-8編碼的CSV檔,中文變亂碼的簡單解法
最近將一個原本用MS950(Big5)的網頁系統變更為UTF-8編碼,原本想只是很簡單的轉換,沒想到接連遇到大大小小的不相容狀況,例如匯出CSV(Comma Separated Values)資料給Excel時竟然變成亂碼!
搜尋後了解因為CSV是很鬆散的格式檔,而Excel預設是以ANSI的方法讀取CSV檔,將UTF-8內容的檔案以MS950的方法讀進去就形成亂碼了。而最簡單的解決方法是將CSV檔寫成UTF-8帶簽名(with BOM,byte-order marker)的格式,也就是在檔案最開頭寫入\uFEFF字元:
oWriter.print("\uFEFF"); // byte-order marker (BOM)
這個解決方法能讓Excel 2003、2010正常讀到中文,但Excel 2007卻還是亂碼,也許產生成UTF-16編碼就可能解決,但要修改更多程式,而且因為公司裡使用Excel 2007的人很少,就直接請他們更新Excel系統,也就不再多試了。
參考
##
您可能也會有興趣的類似文章
- Excel讀取CSV數值字串的解決方法 (0則留言, 2006/12/25)
- Obs#117 | Obsidian表格攻略與表格就地編輯外掛:Table Enhancer (0則留言, 2023/03/19)
- SQLite!不止是資料庫系統,也能快速轉換資料格式 (0則留言, 2021/06/11)
- 超值的iPad分頁式瀏覽器:Mercury Browser (3則留言, 2011/01/19)
- AutoHotkey的Excel.Application操作重點 (0則留言, 2019/11/08)
- 常被寫錯的英文縮寫:CSV與CVS (0則留言, 2005/04/04)
- 把VMWare丟掉! Free的x86模擬器: QEMU (7則留言, 2004/12/16)
- 將Big5的內容轉出成日文 (0則留言, 2006/04/27)
- 去蕪存菁後的iPad常用軟體 (4則留言, 2011/04/16)
- 用Evernote匯入資料夾功能自動同步檔案 (0則留言, 2014/10/11)
- [QNAP NAS] 用SQLite Manager讀取pyLoad資料 (1則留言, 2011/11/06)
- 文字檔轉換為Kindle MOBI檔的工具:m2m的Step-by-step操作步驟 (更新:直排功能) (12則留言, 2018/09/29)
- JSP快速產生Excel內容的方法 (0則留言, 2015/07/15)
- [WordPress] 資料庫切換成UTF-8的匯出/匯入紀錄 (2則留言, 2008/12/06)
- 使用AutoHotkey讀取Excel檔案的簡單說明 (2則留言, 2014/05/24)
原來如此~~
常常都亂碼~~
感謝分享這個訣竅~~
上次忘了補充另一件事情。
CVS到excel有另外一種方式,用匯入(Import)的。
使用匯入會有編碼讓您選。
要先開啟一個新檔,才能找到匯入選項。
拜讀貴文許久,回饋一下小弟經驗。
FEFF和FFFE是Unicode的Byte Order。
UTF8有一個3 Byte的BOM,EF BB BF。
據我所知,這可能是Microsoft訂下的,雖然大多數系統都接受,但似乎仍不是公開的標準。
感謝分享。我也有試著輸出EF BB BF,但用Excel 2010讀卻失敗了…