我有一个dbf文件,其中有一个MONTRÉAL
作为entires。我必须将此dbf文件转换为csv文件。
为此,我正在使用 Microsoft Visual FoxPro驱动程序驱动程序读取此dbf文件,然后将每行转换为逗号分隔,然后将所有行写入名为的文件“ASD.csv”。
但在CSV文件中,MONTRÉAL
显示为MONTR?AL
,即代替É
出现?
个字符。我尝试在将行写入csv文件时使用UTF8编码,但即使这样也无效。
请帮忙。
答案 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 ......
答案 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记事本打开文件。