此代码在.net framework
中按预期工作,但在.net core 2
in.txt文件包含“Düsseldorf”
输出为“Düsseldorf”
输出为“D sseldorf”
(我已经绝望地尝试了所有其他编码......没人工作)
string infile = @"C:\in.txt", outFile = @"C:\out.txt";
var inStr = new StreamReader(infile, Encoding.Default);
var outStr = new StreamWriter(outFile, false, Encoding.Default);
while (!inStr.EndOfStream)
{
outStr.WriteLine(inStr.ReadLine());
}
outStr.Flush();
inStr.Dispose();
outStr.Dispose();
任何想法为什么它不起作用?
答案 0 :(得分:4)
根据官方MSDN page,默认编码不是固定的 - 它取决于操作系统设置。如果您知道文件的编码,请指定它!
编辑: 然后尝试从.net框架中打印编码细节(如名称)。然后在.net核心中指定相同的内容2.不要依赖默认的核心。此页面MSDN, List of encodings in the code sample包含受支持的编码列表。
gsharp更新:
我必须引用NuGet包System.Text.Encoding.CodePages
,注册它们并使用它
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
var enc1252 = Encoding.GetEncoding(1252);
var inStr = new StreamReader(infile, enc1252);
var outStr = new StreamWriter(outFile, false, enc1252);