讀取CSV檔案可能遇到的小問題
由於我們的產品可以事先編寫指令腳本,
讓產品直接載入腳本進行動作,
因此我規畫了該腳本的格式,並選用.csv檔案作為腳本檔案格式。
但在實際撰寫程式之前,我先撰寫了csv檔案的讀取與寫入程式,
先驗證我能夠正確操作該檔案的讀取與寫入。
第一步先透過右鍵建立檔案。
修改檔名(依序由左至右),並直接修改副檔名為csv (強制變更)。
透過以下程式碼進行讀取
並列印出來。
得到結果:
得到了一堆亂碼。
這時我想到,應該是儲存檔案格式的問題,直接修改副檔名肯定是高風險的,
因為檔案本身的格式會和副檔名對不起來,因此應該走正式的存檔方式。
我打開該csv檔案,重新另存新檔,選擇 *.csv格式。
這時候重新開啟這個檔案,就不會出現警告了。
此時再一次透過C++讀取CSV資料,
結果如下:
可以發現Martin的M不見了,變成奇怪的文字,
後來搜尋一下原因,原來是檔案編碼的不同,會造成文字的亂碼。
原來是剛剛選擇另存新檔時,選擇的csv檔案格式是以UTF-8進行編碼,
應該要選擇另一個csv檔案格式才不會造成亂碼,另一個編碼應該是ANSI或Unicode格式,
因為c++只能讀取這兩種格式。
如下圖紅圈處:
專案中的屬性可以設定此專案要使用哪一種編碼:
使用多位元組字元集是給ANSI使用的,
但我兩者都測試過,輸出結果都會是正確的,
因此目前我還不知道excel存出來的csv檔案是屬於哪一種編碼。
讀取結果:
參考資料:
https://www.jb51.net/article/229211.htm
https://husking-studio.com/cpp-txt-file-01/
沒有留言:
張貼留言