[.NET]透過 ODBC 讀取 CSV 檔

有朋友詢問「使用odbc讀取CSV中文出現亂碼該怎麼處理?」,使用 Excel 另存的 CSV 檔,讀進來中文真的是亂碼!

先建立以下的csv檔案來測試(我是放在 D:\temp 的目錄)

c.csv (utf8編碼)
f1,f2,f3
a,b,12:00
中文,堃,13:00

透過 Notepad 來看,它的編碼為 UTF8 ,透過以下的程式讀出來會是亂碼,如下,

string connString = @"Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=D:\Temp;Extensions=csv,txt;";
using (OdbcConnection conn = new OdbcConnection(connString))
{
	string query = "select * from c.CSV";
	OdbcDataAdapter da = new System.Data.Odbc.OdbcDataAdapter(query, conn);
	DataTable dt = new DataTable();
	da.Fill(dt);
}

那要怎麼辦呢? 因為csv中有Unicode,所以我們要透過 Notepad 將檔案以Unicode 編碼 存檔。

然後在該目錄(我是放在 D:\temp 的目錄),新增一個 schema.ini 的檔案,在裡面設定 c.csv 的編碼,如下,

[c.csv]
Format=CSVDelimited
ColNameHeader=True
MaxScanRows=0
CharacterSet=UNICODE

再執行程式,就會發現,讀進來的中文不再是亂碼了哦! 如下,

參考資料

Schema.ini File (Text File Driver)

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^