2016-06-16 7 views
24

Dieses Programm funktioniert einwandfrei, wenn es für .NET 4 kompiliert wird, aber wenn es für .NET Core kompiliert wird. Ich verstehe, dass der Fehler bei der Codierung nicht unterstützt wird, aber nicht, wie er behoben werden kann..NET Core weiß nicht über Windows 1252, wie zu beheben?

public class Program 
{ 
    public static int Main(string[] args) 
    { 
     System.Text.Encoding.GetEncoding(1252); 
    } 
} 
+0

C# ist ein Artefakt von MCV hier; Das Tag gehört nicht dazu. – Joshua

Antwort

41

Um dies zu tun, müssen Sie die CodePagesEncodingProvider Instanz aus dem System.Text.Encoding.CodePages Paket register.

, das zu tun, installieren the System.Text.Encoding.CodePages package:

dotnet add package System.Text.Encoding.CodePages 

Dann (nach implizit oder explizit ausgeführt dotnet restore) Sie können auch anrufen:

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); 
var enc1252 = Encoding.GetEncoding(1252); 

Alternativ, wenn Sie nur brauchen, dass eine Codepage Sie können es direkt ohne Registrierung erhalten:

var enc1252 = CodePagesEncodingProvider.Instance.GetEncoding(1252); 
2

Bitte schreiben:

<ItemGroup> 
    <PackageReference Include="System.Text.Encoding.CodePages" Version="4.3.0" /> 
</ItemGroup> 

in csproj.

In der Paketkonsole 'dotnet restore' schreiben, Baugruppen wiederherstellen.

und wite dieser Code für Beispiel:

public class MyClass 
{ 
    static MyClass() 
    { 
     Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); 
    } 
} 
+0

Die NET CORE-Version für diese Frage ist 1.0 (wie aus dem Datum ersichtlich sein sollte); Diese Antwort funktioniert nicht. – Joshua

+0

Ich weiß, es war die falsche Version (das funktionierte für mich in 1.1, aber es funktionierte wie ein Charme. Gracias amigo. – radpin