使用.net core 2编码问题

时间:2017-09-08 15:28:02

标签: c# .net encoding .net-core

此代码在.net framework中按预期工作,但在.net core 2

中没有

in.txt文件包含“Düsseldorf”

    在.net框架中
  • 输出为“Düsseldorf”

  • 在.net核心中
  • 输出为“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();

任何想法为什么它不起作用?

1 个答案:

答案 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);