有朋友詢問「使用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:從零開始的軟體開發生活」
請大家繼續支持 ^_^