在C#中用csv文件编写法语字符

时间:2012-01-23 10:09:21

标签: c# encoding

我有一个dbf文件,其中有一个MONTRÉAL作为entires。我必须将此dbf文件转换为csv文件。

为此,我正在使用 Microsoft Visual FoxPro驱动程序驱动程序读取此dbf文件,然后将每行转换为逗号分隔,然后将所有行写入名为的文件“ASD.csv”。

但在CSV文件中,MONTRÉAL显示为MONTR?AL,即代替É出现?个字符。我尝试在将行写入csv文件时使用UTF8编码,但即使这样也无效。

请帮忙。

3 个答案:

答案 0 :(得分:5)

您必须使用特定的编码。法语是“iso-8859-1”或“windows-1252”。

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

答案 1 :(得分:1)

几年前我的实施使用了:

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

我想这应该有用,因为我们的应用程序支持很多语言,包括日语。

编辑: 适用于MONTRÉAL的记事本,Notepad ++,Excel,LibreOffice ......

UTF8, Unicode and other encodings differences的一个很好的解释。

答案 2 :(得分: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记事本打开文件。