var myGoodString = System.IO.File.ReadAllText(
@"C:\path\to\file.txt",
Encoding.GetEncoding("Windows-1252")
);
内存中的 .NET/ CLR string
不能是 UTF-8。如果您愿意,它只是 Unicode 或 UTF-16。
上面的代码将正确地将 CP1252 中的文本文件读入 .NET string
。
如果你坚持要通过 a byte[] wind1252Bytes
,那很简单:
var myGoodString = Encoding.GetEncoding("Windows-1252").GetString(wind1252Bytes);
自从编写了这个答案以来,已经出现了新版本的框架 .NET,默认情况下它不能识别所有旧的(旧的)特定于 Windows 的代码页。如果Encoding.GetEncoding("Windows-1252")
您的运行时版本引发异常,请尝试注册其他提供程序
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
(可能需要额外的程序集引用System.Text.Encoding.CodePages.dll
)在使用之前Encoding.GetEncoding("Windows-1252")
。
请参阅CodePagesEncodingProvider
类文档。