2012-01-23 49 views
3

我有一個dbf文件,它有MONTRÉAL作爲其中一個條目。我必須將這個dbf文件轉換成一個csv文件。在csv文件中寫法語字符#

爲此,我正在讀通過的Microsoft Visual FoxPro驅動程序驅動這個DBF文件,然後將每行轉換爲逗號分隔,然後寫所有線路,名爲「ASD.csv」文件。

但是在CSV文件MONTRÉAL中顯示爲MONTR?AL即代替É a ?字符出現。在將行寫入csv文件時,我嘗試使用UTF8編碼,但即使這樣也行不通。

請幫忙。

+0

什麼編碼是你正在閱讀的文件,你在閱讀它的編碼? –

+0

您使用什麼應用程序查看CSV文件?它使用什麼編碼? CSV文件可能是正確的,但查看器使用了錯誤的編碼。 (沒有真正的CSV標準,也沒有CSV文件的首選編碼,並且該文件也沒有記錄使用的編碼,必須在生產和消費應用程序之間單獨商定。) – Codo

+0

我使用Notepad ++查看CSV文件。 –

回答

1

我執行幾年前使用:

var writer = new StreamWriter(fileStream, Encoding.Unicode); 
writer.Write(csvContent.ToCharArray()); 

我想這應該工作,因爲相當長的一段語言是在我們的應用程序支持,包括日本人。

編輯: 作品蒙特利爾用記事本,記事本++,Excel和LibreOffice的...

UTF8, Unicode and other encodings differences一個很好的解釋。

1

我建議你使用UTF8編碼是這樣的:

using (StreamWriter writer = new StreamWriter("asd.csv", false, Encoding.UTF8)) 
    { 
     writer.WriteLine("Id;City"); 
     writer.WriteLine("1;Montréal"); 
     writer.WriteLine("2;Québec"); 
    } 

這將添加一個BOM(Byte Order Mark)到CSV的開頭,然後你可以打開的Excel文件直接,甚至與標準Windows記事本成功。

2

你必須使用特定的編碼。法國是「iso-8859-1」或「windows-1252」。

Encoding.GetEncoding("iso-8859-1") 
+0

謝謝。這非常有用! – logcat