在 C# 中使用 iso-8859-1 编码"œ"



我正在使用以下代码读取CSV文件:

using (StreamReader readfile = new StreamReader(FilePath, Encoding.GetEncoding("iso-8859-1")))
{
// some code will go here
}

CSV文件的一列中有一个字符œ。它在输出中被转换为?。我如何才能正确地编码这个339,以便在输出中得到相同的339字符而不是问号。

这是一个编码问题。许多非Unicode编码要么是不完整的,并将许多字符转换为"?",要么在不同的平台上具有微妙的不同行为。考虑使用UTF-8或UTF-16作为默认值。至少,如果可以的话。

"windows-1252"是"ISO-8859-1"的超集。尝试使用Encoding.GetEncoding(1252)

演示:

public static void Main()
{
System.IO.File.AppendAllText("test","œ", System.Text.Encoding.GetEncoding(1252));
var content = System.IO.File.ReadAllText("test", System.Text.Encoding.GetEncoding(1252));
Console.WriteLine(content);
}

在线试用!

iso-8859-15字符集包含这些符号,Windows-1252代码页也是如此。但是,请注意,8859-15重新定义了8859-1中其他六个很少使用的(或ASCII重复)字符,但Windows 1252也是如此。快速的网络搜索就会发现这些差异。

最新更新