C#将编码设置为读取和写入具有特殊字符的文件



我有一个csv文件,其中包含法语和德语中的特殊字符,例如:é,ü,ö。。。这个文件需要在程序中重新排列成不同的csv格式。问题是结果文件中的特殊字符被替换为�还是只是?我检查并阅读源文件不好:

Encoding encoding = Encoding.GetEncoding("utf-8");
string fileName = @"D:tempsourceFile.csv";
var lines = File.ReadAllLines(fileName, encoding);

当我检查行列表中的内容时,已经有特殊的字母被替换为?,所以文件的读取一开始就不好。我尝试了各种编码,但都不起作用。原始csv文件是ANSI,我不知道为什么它根本不起作用。

最终结果被写入结果文件:

TextWriter tw = new StreamWriter(@"d:tempResult.csv", false, encoding);
foreach (var item in result)
{
tw.WriteLine(item.Key + ";" + item.Value);
}
tw.Close();

这种编码似乎从一开始就是个问题。我尝试了包括编码在内的各种方法。默认情况下,什么都不起作用。求你了,救命!

我有同样的问题:

如果默认值不起作用,您可以尝试一些编码:

"Windows 1252" -> Encoding.GetEncoding(1252); #Europe Ouest (Windows)
"ISO-8859-1" -> Encoding.GetEncoding(28591); #Europe occidentale (ISO)

最新更新